学会10多种语言是种什么样的体验?

80年代末,我第一次接触了Apple II电脑上的BASIC编程语言,从此走上了一条程序人生。十多年前我在博客园上开通了自己的博客,由于下象棋时经常出点“毒”招,所以网名干脆就叫“毒龙的程序人生”,2016年8月底申请公众号,名字就叫“申龙斌的程序人生”了。

回想这些年,由于项目需要或兴趣使然,竟然学了十多种编程语言。

BASIC

第一次接触计算机大概是在1987年,当时我的学校竟然引进了20台昂贵的Apple II计算机,我连如何操作电脑都不会,直接就学BASIC语言。

那时也不懂什么结构化编程,反正就是抄着书上的代码学,虽没写出什么成规模的BASIC程序,但也算编程入门了。记得曾把几个程序小心翼翼地保存在一张1.2M的大软盘中,可惜现在软盘也没了踪影,所以一行BASIC代码现在也没有留下,想怀念怀念过去都没了可能。

FORTRAN

FORTRAN是在读本科时学的,当时科学计算很流行,这是数学系的必修课。一个班几十人连接一台大型机(我已经忘了它的名字),提交程序后得等上十多分钟才能看到程序的编译结果,所以代码要写得非常认真,提前把代码写在本子上,仔细检查各种语法和逻辑错误,否则上机1小时可能连编译都无法通过。

参加工作时竟然还用FORTRAN语言做过项目,当时有一位北大毕业的CHAI师傅,能用FORTRAN写上几百行的代码,我就跟着他修改这一堆代码。当时能写代码的人就是高手,不管什么可维护性,GOTO语句满天飞,每做一个项目就复制、修改一份源程序,最后程序版本混乱,无法维护。

最让我震惊的是当时MIPS工作站上的一套国外开发的地震解释软件,竟然包含了全部的FORTRAN源代码,那套代码有上万行,注释详细,逻辑清晰。

那时的我明白了结构化编程的重要性,即使语言本身的特性不好,也同样能够写出可维护的优美代码。

PASCAL

大学里开了《数据结构》这门课,所有的例子代码都是用PASCAL语言写的,所以我又学了PASCAL语言。

以前学FORTRAN和BASIC时,养成了非结构化编程的坏毛病,因为有行号,语句之间可以随意跳转,也没有模块化的概念,乱用全局变量,程序的可维护性几乎为零。PASCAL这门语言的特点就是严谨,begin和end虽然啰嗦,但结构非常清晰,靠这门语言养成了结构化编程的好习惯。

工作后还曾经用Dephi(在Pascal基础上升级的面向对象的可视化编程语言)写过一个小项目,可惜也没有实际的应用效果。

C

C语言因为性能好,被UNIX、Windows各种机器所支持,所以使用广泛。大学时我们班里没有开这门课,我跑到计数班去听这门课,上机课就混他们的机时。

C语言中指针等概念虽然麻烦,但还是慢慢掌握了。我一开始学语言的动机实际上就是想着写游戏,当时俄罗斯方块正流行,自己也尝试着写一个。有一次,老师在微机课上巡查,发现我正在玩俄罗斯方块,当场对我提出严厉的批评。

我轻轻地按下一个功能键,游戏马上停止,此时显示出一排排的C代码,我正在调试自己写的C程序呢。老师盯着看了看,无语,向其他学生走去。

实际上,自己根本不可能沉迷于自己写的小游戏,而是更关心如何让动画更流畅、代码如何写得更简洁,如何调整难度级别、改进一下记分系统等等。在写游戏的过程中,逼得自己去掌握了编程的语法和算法。

工作后,这门语言的用处还挺大,当时分到物探方法室工作,主要接触UNIX工作站,只有C语言能用也会用,所以就经常帮着师傅们写点小程序,做些上万行数据的统计、格式转换之类的小活,实际上可是帮了他们的大忙。

Visual Basic

Visual Basic可视化式的编程开发开创了一个新的时代,当时用鼠标点点拖拖就可以产生一个Windows程序,这种感觉太美妙了,由于我有以前的BASIC基础,所以学这种语言飞快。

Visual Basic这款产品的兼容性真是没得说,最早的开发环境是在Windows 98上开发的,后来windows升级到2000, xp,windows 7,它仍能运行。

我现在仍在维护的一个用VB写的程序就是瑞士积分编排程序的表格生成器SwissTab,前前后后修改了无数次,至今仍在一些比赛中发挥作用。

CASL

CASL这语言估计很多人没听说过,它并不是一门真正的语言,只是一门考试用的汇编语言。参加工作后,项目并不多,就去报考高级程序员试试,其中有一道大题就是写CASL这种汇编语言。

由于我并非计算机专业毕业,基础知识薄弱,想通过高级程序员还是非常有难度的。第一年我没有通过,来年我把那套高程教材几乎都翻烂了,把所有的练习题都做了一遍,把历年的高程题都试了一遍,从而顺利通过,那时是1996年。就因为这个高级程序员证,还提前2年混到了中级职称。

JAVA

JAVA语言大概是在2000年学的,此时的JAVA语言火得一塌糊涂,“一次编写,到处运行”的理念好像是各个软件项目的救命稻草。本来以为它的优势是桌面端程序,没想到后来服务器程序却变成了它的强项,J2EE/EJB大行其道,写个服务器端程序非要吹出J2EE四个字来。

当前室里几个人组成了一个团队,写出了胜利信息网网站发布系统,2003年上线,一直沿用到了现在。这种跨平台的语言真是节省了大量的工作量,我们的java,JSP程序都在windows端编写、调试,最后的程序部署在unix机器上的weblogic上,非常方便。

此系统被强行交给信息室维护,项目和人员全部解散,以后我再也没有用JAVA做过项目。

C#

这是在项目中应用最多的一门语言,相对其它语言来说,在Windows上开发,学习门槛较低,在国企里能建立起这样一支队伍已属不易。现在带着团队还在完善、推广和维护的系统就是EDSS系统了。

另外用C#写的几个小程序:

Haskell

2008年,无意中接触到纯函数式编程语言Haskell。这种语言与以前学的命令式编程(Imperative Programming)完全不是一种思路。Haskell语言是一群数学家发明的,写起来就像一条条公式,欣赏一下这段优美的快速排序代码:

qsort [] = []
qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger
    where
        smaller = [ a | a <- xs, a < x ]
        larger  = [ b | b <- xs, b >= x ]

用一行代码打印100以内的勾股数:

[(x,y,z) | x<-[1..100], y<-[x..100], z<-[y..100], x*x + y*y == z*z]

后来出现的新编程语言很多都借鉴了函数式编程语言中的语法特点,Python中也能写出类似这样的语句。

Objective-C

2011年,苹果APP非常吃香,我也交了99刀的学费体验了一把苹果开发者。历经一年的折磨,踩了无数坑,终于提交了一个小程序XQViewer,当时也不懂什么推广和流量,最终只卖出了几美金,连第二年的开发者证书费用都交不起,更别谈用APP挣钱了。

R

看《大数据时代》和《赤裸裸的统计学》这本书时,又学了一点R语言,这门语言中竟然全部都是向量计算,统计功能强大,我试着用R分析孩子们的考试成绩,短短的代码,立刻可以生成多种直观的分析图表。

我的教训

1)学习新技能时没有目的和计划性,虽然学了10多种编程语言,只有C#算是用得最熟练的,其它的都不精,连最重要的前端JavaScript竟然都没好好学。不管学哪门语言,一定要写一款产品,然后不断打磨它。

2)各种语言实际上主要分为两大体系:过程式(或命令式)、函数式,过程式阵营中掌握JAVA或C#即可,纯函数式的编程语言几乎没有,只要了解Haskell或Lua等的理念即可,实际上现代的编程语言都已经吸收了函数式编程的先进思想。

3)学了一堆语言的一点点好处,就是当遇到一个实际问题时,马上会想到用某种语言解决起来会更加简洁高效。

4)学了十多种语言后,再学其它语言时,只用一、二周就能学完所有语法,比如Python。其实最麻烦的部分是每种语言都带着庞大的类库,这些东西只能通过项目慢慢熟悉。

5)学了这些语言后,现在发现只剩下一个优势了,就是当别人编程遇到障碍时,能够很快发现对方可能的错误,看来我的使命就是辅导别人学编程了。

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

横古贯今的隐私密史:密码的前世来生

21世纪什么最贵?密(秘)码(密)! 但陈老师高清无码教材红了,某菊订票信息玩票“脱裤”了,数以千万计的开房信息泄露了,各种社工库横行霸道,让我们不禁不去感叹...

2225
来自专栏阮一峰的网络日志

关于BT下载电影

BT下载的一个注意点,就是你必须认清版本。同一部电影,网上往往有几十个、甚至几百个版本,有的版本质量很糟糕,下载它们就是浪费时间和带宽。

6753
来自专栏听雨堂

关于IP,这里有你想知道的一切!

3484
来自专栏程序人生

浪费内存?多大个事?

遥想盖子当年,MS 红火了,谈笑间,640k 内存足矣。 - 程序君 现在已经不是从指缝中扣内存的时代了。bit 在主流的解释型语言中要么失了踪迹,要么被作为...

4508
来自专栏深度学习之tensorflow实战篇

R语言进行分析,比较详细的一篇,亲测过哦

要分析文本内容,最常见的分析方法是提取文本中的词语,并统计频率。频率能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多。词语提取后,还可以...

37011
来自专栏vue学习

读《学习之道》— 搭建组块对抗发懵

621
来自专栏腾讯大讲堂的专栏

1024丨腾讯第一首程序员之歌【Code代码】

“发布总是在半夜 回滚是永远的愁”。 内存泄漏、深夜发布、需求变更,这些熟悉的词语和场景,相信对于每个程序员朋友来说,都有着独特的记忆和感触,在此谨祝全天下的程...

1.2K5
来自专栏程序人生

如何阅读一份代码?

上文谈到了像读书一样阅读源码的重要性,今天谈谈如何阅读一份代码。我所谓的一份代码,其范围可能从几千行到数万行,有时甚至可多达数十万行。这些代码作为一个有机体,共...

3817
来自专栏平凡文摘

只有程序员才看得懂的漫画

1283
来自专栏CSDN技术头条

Hacker曾经知晓的那些事

笔者想到现在年轻的Hacker们对ASCII表和那些奇怪的控制字符越来越陌生,不禁感慨万千。 这些知识原本是年轻Hacker们初出茅庐的第一课。然而世事变迁无常...

25910

扫码关注云+社区

领取腾讯云代金券