FORTRAN 自动编码系统
写数学,而不是机器的地址——让一个程序把它编译成不输于人手的代码。
1957 年以前,告诉计算机做什么,意味着用它原始的数字语言,一个地址一个地址地亲手去写。FORTRAN 让你改写数学——剩下的,交给机器。
核心想法
计算机只懂得一长串细小的、带编号的命令——把这个数取来、把那个数加上、把结果存到这里。亲手写这些清单又慢、又枯燥、又容易出错。FORTRAN 一并带来了两样东西:一种高级语言,让你写下贴近普通代数的式子;以及一个编译器——一个会读你的公式、替你写出机器所有细小命令的程序。
于是,你不必再写几十条晦涩的指令,只需写一行——Y = A*X**2 + B*X + C——编译器就会自动把它翻译成快速的机器代码。最大胆之处在于:当时没人相信机器能把这种翻译做得足够好。FORTRAN 的编译器证明了它能:它产出的代码,跑得几乎和人类专家手写的一样快。
它是如何诞生的
项目于 1954 年在 IBM 启动,由一位名叫约翰·巴科斯的年轻研究者领导,为 IBM 强大的新机器 704 而作。那时,仅仅为一个问题做准备——写程序、调试程序——的花费,就超过了计算本身。巴科斯的主张,是用自动编码把这笔花费砍下来。
他遇到了深深的怀疑。专家程序员以亲手雕琢紧凑的机器代码为荣,不信任何自动系统能与他们比肩。于是巴科斯的团队把「效率」当成执念:编译器不只翻译,还要优化,竭力把机器稀缺的快速寄存器用在刀刃上。这花了约三年,以及一场浩大的编程苦工。当 1957 年编译器交付时,它成了——怀疑者,也被折服了。
它为何重要
FORTRAN 把编程,向真正手握问题的人——科学家与工程师——敞开,而不再把它锁在一小撮机器代码祭司手中。它让软件的编写大幅变便宜、变快,并在此过程中,帮助催生了软件产业本身。我们今天挂在嘴边的词——编译器、高级语言——正是经由它,走入了寻常用语。
一个可以想象的画面
想想乐谱。作曲家用干净、可读的记法写下一段旋律——纸上寥寥几行。技艺娴熟的演奏者,再把每一个音符,化作真正发出声音的、精确而飞快的指间动作。FORTRAN 就是那位演奏者:你写下可读的记法,编译器便一音一音地,把它演绎成机器必须做出的成千上万个精确的小动作——而且,演绎得几乎不输于最高明的那双手。
它的位置
FORTRAN 并非自动编程的最初尝试——格蕾丝·霍珀早已造出过早期编译器,也有人试过代数系统——但它是第一个既高效、又被广泛采用的,正因如此才扎下了根。它之后,语言如潮水般涌来:ALGOL、COBOL、BASIC、C,以至后来的 Python。对它那缠绕的 GO TO 风格的反弹,则把埃兹格·迪杰斯特拉等人引向了结构化编程——这条线索,你可以在本馆别处接着追下去。
DO 5 I = 1, 10
IF (X) 10, 20, 30