元旦节在家重温了一遍《三体》,看到下面一段描写:
监听部的计算机系统也远比发射部庞大复杂,叶文洁第一次走进主机房时,看到一排阴极射线管显示屏,她惊奇地发现,屏幕上竟滚动着一排排程序代码,可以通过键盘随意进行编辑和调试。而她在大学里使用计算机时,代码都写在一张张打格的程序纸上,再通过打字机噼噼啪啪地打到纸带上。她听说过从键盘和屏幕输入这回事,现在竟然真的看到了。但更令她吃惊的是这里的软件技术,她知道了一种叫 FORTRAN 的东西,竟能用接近自然语言的代码编写程序,能将数学公式直接写到代码里!它的编程效率比机器码汇编不知高了多少倍。还有一种叫数据库的东西,竟能那样随心所欲地操纵海量数据。
勾起了我的一段回忆,我的第一门计算机编程语言,就是这段话中提到的 FORTRAN。
FORTRAN 是 “公式翻译”(Formula Translation)的缩写。这门编程语言估计绝大部分程序员都没听说过。不过其来头不小,历史也悠久。早在 1957 年,由 IBM 开发,是世界上第一个高级编程语言。更为神奇的是,如此古老,也没多少人听说过的语言,并没有消失,仍然在科学计算领域发挥着余热。有一次和一位从事 GPU 研发的朋友聊天,他们首先做的工作就是支持 FORTRAN 语言,可见这门语言在科学计算领域仍然是顶梁柱。在最新的 TOIBE 兵器谱上排行 26,相当不错的成绩。
想想那个时候的电脑,真的是相当简陋。显示器是黑白的,没有硬盘,没有鼠标,上机的时候,每个人带几张磁盘,样子如下:
这是一种直径为 5.25 英寸的软盘,最大容量为 1.2 MB。别小看这点容量,当时上面要存操作系统(DOS)、编辑器(ED)、FORTRAN 编译器,编写的代码也存放在这张软盘上。也就是说所有的操作都在这张软盘上,现在觉得真不可思议,哪像现在的系统,动辄好几十个 G。
关于 FORTRAN 语言的语法,现在是完全不记得。只记得有一点,FORTRAN 语言对格式要求非常严格,代码只能写在 7~72 列,当时对打字非常生疏,在这种格式上吃过很多亏。上机时最多的是碰到拼写错误,往往需要花费很多宝贵的上机时间。
FORTRAN 语言本身在发展,我们当年采用的是 FORTRAN 77,具有结构化编程特性。虽然 FORTRAN 90 加入了面向对象,并提供了指针,但这些对于我们来说过于超前。关键是,大一学了这门编程语言之后,就再也没有用过它。其实我上大学的九十年代,很多编程语言如 C/C++、PASCAL,等等,都已经出现并成为主流。而且那个时期正是从 DOS 操作系统转向 Windows 的过渡期,等我毕业的时候,Windows 3.2 / Windows 95 开始成为主流。作为程序员,编写一个带图形界面的程序才是一件炫酷的事。为了满足 Windows 下的程序开发,微软推出了 Visual Basic 语言,这门语言上手简单,通过拖拽控件就能完成用户界面设计。所以我工作后使用的第一门编程语言实际上是 Visual Basic。
学习了一门编程语言,但从没派上实际用场,是不是白学了呢?
也不能这样说,从 FORTRAN 语言的学习中,掌握了程序的基本结构(循环、判断),也学习了结构化编程思想(函数、过程),这样在后续的 C 、PASCAL、Visual Basic 语言的自学中,可以快速上手,除了 PASCAL 引入了面向对象之外,其它的编程结构基本差不多,只不过是语法有些差异。而面向对象的编程思想,也是在之后好几年才开始流行。当时的 Visual Basic 语言虽然不支持面向对象编程,但已经有封装、事件等概念,间接的帮助我后来理解面向对象编程。
技术都是有传承的,FORTRAN 有些特性被 Matlab 继承,比如可以直接对矩阵和复数进行运算,比如矩阵元素在存储空间的存储顺序采用行优先,等等。
对待大学的学习,不要认为大学都是学的落后知识,学到的东西没有直接派上用场,就抨击大学教育。要知道,有些知识,其影响是潜移默化的。
在后来的工作中,我陆续学习过不下十门编程语言,基本都是随学随用,查查手册、查查资料,就可以上手。
你的第一门编程语言是什么?有什么特别的记忆?欢迎在留言区讨论。