年末,JohnBackus向IBM提交了一个建议,为构建IBM开发一个更实用的编程语言。基本的想法就是简化数学表达式的输入方式。年11月份,IBMMathematicalFormulaTranslaingSystem规范草案编写完成。随后的年10月,Fortran的说明文档出现,年4月,第一个Fortran编译器正式交付。这是第一个正式商用的编程语言,也是第一个优化型编译器:毕竟对于当时的使用者来说,还是希望所使用的高级语言生成的程序,要能够达到跟手写汇编一样的效率。
Fortran团队的一些程序员是国际象棋棋手,因为觉得他们的思维逻辑性更强,于是就被选中作为IBM的雇员。后来的JohnBackus在接受采访时说,大部分的工作源自于其偷懒的想法:因为不喜欢写程序,所以在给IBM写导弹轨迹计算程序的时候,就尝试搞一个可以更方便写程序的程序。而这个思路,也就演变成了随后的Fortran。
Fortran自发布以后就被部分科学家用来编写数值密集型程序,这也促使编译器作者不断优化编译器,可以生成更快更高效的代码。于是Fortran编译器演进的同时,编译技术也在一起发展:一些早期的优化技术也随之加入进Fortran编译器。
Fortran结构上的创新在于引入了代码块的概念,一个块只有一个入口和一个出口,这样就便于更好的控制程序的逻辑。在此基础上加入了基本的3路IF语句和LOOP语句,以支持分支跳转和循环。
注意这里的IF还是比较原始的通过判断数值表达式的结果来进行三路跳转,所以看起来仍然是仍然会感觉很奇怪:IF(expr)numbernumbernumber,计算expr的值,根据值得结果是负、零、正来决定跳转到后面对应的某一个行号。
直到年的FORTRANIV才加入LOGICAL数据类型(也即bool类型)和基于逻辑结果的IF分支语句。而真正的基于块的IF-ELSE-ENDIF,则要等到年finalize的FORTRAN77中才有支持。这个时候Fortran才算是填上了结构化编程的最后一块砖。
而这样的一个过程,可以看出Fortran自身也在适应潮流不断发展。这也正是最初就定下来的基调。Fortran几乎是在模块化地添加和丰富自身的特性。FORTRANII加入了过程式的支持,可以自定义子程序和函数,随后更是一步步地加入了结构化编程(FORTRAN77)、模块化和泛型编程(Fortran90)、面向对象编程(Fortran)以及并发和并行编程(Fortran/)的支持。这也成了后续标准化的编程语言的一个趋势:后来的Ada和C++都在有这么一个模块化添加和丰富自身特性的过程。
Fortran自身的语法直接影响了很多编程语言的设计,比如典型的例子BASIC,基本上就是清理了一部分语法噪音之后的Fortran。Fortran其比较直接的定位也相对来说给自己保留了很大的一部分发展空间:科学计算和高性能计算领域,并不需要非常fancy的特性,要的是稳定、高效和能直观表达思路的方法。所以即便业界或者IT行业很少出现Fortran的身影,他依然能够作为一个学界主流的编程语言保持60多年的持续更新。
更重要的是作为一个商业化的编程语言,Fortran证明了高级语言是有其市场空间的。所以接下来,就是第一波编程语言潮。
KimmyLeo