20世纪80年代后期,我第一次接触到BASIC编程语言是在AppleII电脑上,从此走上了编程生活。十多年前,我在博客园开了自己的博客。由于我下棋时经常走一些“毒”棋,所以我的网名就干脆叫“毒龙程序人生”。叫做《沈永斌的程序化人生》。回顾这些年,由于项目需要或兴趣,学习了十余种编程语言。BASIC第一次接触电脑大概是在1987年,当时我的学校居然引进了20台价格不菲的AppleII电脑。我连电脑都不会,就学了BASIC语言。那时,我对结构化编程一无所知。反正我只是抄书上的代码。虽然我没有写过什么大型的BASIC程序,但也算是编程入门了。我记得在一张1.2M的大软盘里小心翼翼地保存了几个程序。可惜现在软盘已经没有了,所以现在一行BASIC代码也没有留下,不可能错过过去。FORTRANFORTRAN是本科学习的,那时候科学计算很流行,是数学系的必修课。一个班几十个人连着一台主机(忘记名字了),提交程序后要十几分钟才能看到程序的编译结果,所以代码一定要写得很仔细,而且代码应该提前写好。在笔记本上仔细检查各种语法和逻辑错误,否则在电脑上1个小时你可能连编译都编不出来。工作的时候,我什至用FORTRAN语言做项目。当时有个北大毕业的CHAI大师,FORTRAN能写出几百行代码,我就跟着他修改了这堆代码。那个时候能写代码的都是高手。不管可维护性如何,GOTO语句到处都是。每次完成一个项目,都会复制和修改源程序的副本。最让我震惊的是,当时MIPS工作站上的一套国外开发的地震解释软件,居然包含了FORTRAN的全部源代码。代码数万行,注释详尽,逻辑清晰。那时,我明白了结构化编程的重要性。即使语言本身的特性不好,我仍然可以写出可维护的漂亮代码。在PASCAL大学开设了《数据结构》的课程,所有的示例代码都是用PASCAL语言写的,于是又重新学习了PASCAL语言。我在学习FORTRAN和BASIC的时候养成了非结构化编程的坏习惯。因为有行号,我可以随意跳转语句,没有模块化的概念。乱用全局变量,程序的可维护性几乎为零。.PASCAL的语言是严谨的。begin和end虽然啰嗦,但是结构很清晰。这种语言养成了结构化编程的好习惯。工作之余,用Dephi(一种在Pascal基础上升级的面向对象的可视化编程语言)写了一个小项目,可惜没有实际应用效果。CC语言因其良好的性能而被广泛使用,并得到UNIX和Windows机器的支持。我上大学的时候,我们班没有这门课。我是去计数班听这门课的,上机课我用的是他们的上机时间。C语言中的指针之类的概念虽然麻烦,但是慢慢掌握。一开始我学习这门语言的动机其实是想写一个游戏。当时流行俄罗斯方块,我就试着自己写了一个。有一次,老师检查电脑课,发现我在玩俄罗斯方块,当场严厉批评了我。我轻轻按下一个功能键,游戏立即停止。这时,显示出一行行的C代码。我正在调试我写的C程序。老师看了一眼,无言以对,朝其他同学走去。其实我不可能沉迷于自己写的小游戏,我更关心的是如何让动画更流畅,如何把代码写得更简洁,如何调整难度,完善评分系统,等等。在写游戏的过程中,我强迫自己去掌握编程的语法和算法。工作后,这门语言很有用。当时,我被分配到物探方法室工作。我主要接触UNIX工作站。只会用C语言,会用,所以经常帮高手们写小程序,做几万行数据统计,格式转换等小任务,其实帮了他们不少忙。VisualBasicVisualBasic的可视化编程发展开创了一个新纪元。那时,用鼠标点击和拖动就可以生成一个Windows程序。VisualBasic这款产品的兼容性真是没话说。最早的开发环境是在Windows98上开发的,后来Windows升级到2000、XP、Windows7,依然可以运行。我仍在维护的一个用VB编写的程序是SwissTab,它是瑞士计分程序的表格生成器。它经过了无数次修改,在一些比赛中依然发挥着作用。估计很多人都没听说过CASLCASL这门语言。它不是真正的语言,而是一种用于考试的汇编语言。入职后项目不多,就去报考高级程序员,其中一大题就是写CASL的汇编语言。由于我不是计算机专业的,基础知识薄弱,想通过高级程序员还是很难的。我在***年失败了。接下来的一年,我几乎翻遍了那套高阶教材。历年的练习题我都做了,高阶题也都试过了,所以顺利过关。那是1996年。因为这张高级程序员证,我提前2年拿到了中级职称。JAVAJAVA语言大概是2000年学的,那时候的JAVA语言乱七八糟。“一次编写,到处运行”的理念似乎成了各种软件项目的救命稻草。本来以为它的优势是桌面程序,没想到后来服务器程序成了它的强项。J2EE/EJB开始流行,写服务器程序不得不写J2EE这个词。前厅几个人组成一个团队,编写了胜利信息网的网站发布系统。它于2003年推出,一直沿用至今。这种跨平台的语言确实节省了很多工作量。我们的java和JSP程序都是在windows端编写和调试的,最新的程序部署在unix机器上的weblogic上,非常方便。这套系统被强行移交给信息室维护,所有项目和人员全部解散。以后再也没有用过JAVA做项目。C#是项目中使用最广泛的语言。与其他语言相比,在Windows上开发的学习门槛更低。在国企打造这样一支团队并不容易。目前还在和团队一起完善、推广和维护的系统就是EDSS系统。另外还有几个C#写的小程序:C#写的CGM分析程序C#写的象棋引擎程序Eclipse油藏模型分析程序SeismicPro地震剖面显示程序LDM地震数据存储格式分析及应用AlphaGo挑战李世石,我的点格象棋程序挑战童子军Haskell2008年,无意中接触到了纯函数式编程语言Haskell。这门语言和我之前学的命令式编程完全不一样。Haskell语言是由一群数学家发明的。它写得像一个公式。享受这个漂亮的快速排序代码:qsort[]=[]qsort(x:xs)=qsortsmaller++[x]++qsortlargerwheresmaller=[a|a<-xs,a
