对于一个小学生来说,这样的公式3+10*5你可以很轻松的计算出来但是对于一个程序员来说,如果你想从头开始写一个程序,解析并执行这个计算,你会发现它非常困难。然而,算术表达式可能更复杂,需要一种通用的程序处理方法,可以将任何算术表达式转换为正确的执行顺序。这个问题在60年前也困住了JohnBackus和他的团队。后来他们发现了一种叫做StackEvaluation的方法来解决算术表达式的问题。因此,JohnBackus团队开发的程序也被称为FormulaTranslation,简称Fortran。当然,Fortran不仅可以进行公式翻译,还引入了现代编程语言的许多特性,如DO循环、IF语句、数组、子程序等。虽然还很简陋,但Fortran已经满足了科学计算的需要,成为编程史上第一巨头。Fortran提供定点数和浮点数,适合数值运算,但不擅长处理文本,显然不适合商业使用。这时,美国国防部想要创建一种可以在各种计算机上运行的数据处理编程语言,于是就联系到了GraceHopper。随后,美国国防部召集了一群人,成立了一个数据系统委员会,讨论创建一种新语言。数据系统委员会内部争吵不断,RCA的代表对主席尤其不满。他甚至制作了一块墓碑,上面刻有新语言的名称,并邮寄给了五角大楼。这种语言就是COBOL(COmmonBusinessOrientedLanguage,通用商业语言)。GraceHopper(图中右下角的军装女士)为COBOL的诞生做出了杰出贡献,也被称为“COBOL之母”。COBOL放弃了算术符号以支持英语。COBOL专为商业数据处理而设计,特别适用于操作大量数据和具有循环处理周期的数据(如打印工资支票等)。因此,COBOL在银行、金融、保险、会计等行业占有重要地位。如今,43%的银行使用COBOL系统,90%的ATM交易在COBOL代码上运行。然而,这种语言太古老了,以至于没有多少人知道它了。科学计算和业务处理都有自己的语言,计算机科学家也坐不住了。1958年,美国和欧洲的计算机科学家在瑞士召开会议,决定创造一种新的语言。这种新语言是ALGOL。ALGOL的设计非常优雅。首次提出了块结构(begin...end)、词法作用域、嵌套函数等概念,以及IF..THEN..ELSE、WHILE等语法,为结构化编程奠定了基础。在ALGOL的报告中,首次引入了描述语言文法的BNF形式,成为许多编译器的基础。但是,由于ALGOL最初的设计目标是描述算法,连一个标准的I/O都没有定义,这阻碍了它的商业应用。虽然在商业应用上并不成功,但是ALGOL开创的思想影响了我们现在所知道的编程语言,成为了很多编程语言的根源。Fortran、ALGOL、COBOL是早期计算机编程语言的三巨头。这三者掀起了第一波编程语言的浪潮。几十年后,三巨头早已不复存在,只能在遗留系统中找到。但是,作为编程语言的早期开拓者,他们理应受到所有编程语言的尊重。在下一波浪潮中,个人电脑将崛起,由个人——而非委员会——创造的编程语言将盛行,我们下一期再见。注:本文内容主要改编自这篇文章:https://www.i-programmer.info/history/computer-languages/472-part-2-the-1960s.html
