|
2007年3月20号,计算机科学先驱之一、FORTRAN之父、1977年图灵奖得主、BNF(巴克斯-诺尔范式)的发明者之一、美国科学院院士和工程院院士、John W. Backus走完了他生命的最后一程。
Backus 1924年生于美国费城,家庭富裕。他的父亲曾供职于一家火药公司,因为善于分析问题,找到了公司常常发生爆炸事故的原因(原来是德国进口的温度计惹的祸),从普通员工升为公司首席化学家。一战期间军火业火爆,他的父亲因此致富。战后他成为证券经纪人,也非常成功。
因为家庭条件优越,小Backus无忧无虑,在人生的最初岁月,大有玩世不恭的意思,成了一个纨绔子弟。在宾夕法尼亚州著名的Hill中学,他经常考试不及格,而且常常旷课。据他自己回忆:“那时我讨厌学习,功课老不及格,只是晃来晃去地消耗时间。一心想着暑假去新罕布什尔州的夏令营,划船,玩耍。”“学校里有趣的地方就是有那么多规矩你可以去违反。”(The delight of that place was all the rules you could break)
直到18岁时(1942年)才进入弗吉尼亚大学。化学家出身的父亲让他子承父业,他喜欢化学理论,但对摆弄瓶瓶罐罐做试验可不感冒,因此到第二学期的时候,每周就只上一堂课(据说还是音乐欣赏课)了,最终被学校开除,结束了短暂的第一次大学生涯。
很快Backus就参军入伍,在佐治亚州Stewart军事基地担任防空任务。但在能力测试中,他表现出色,被美国军方送到匹兹堡大学学习工程预科,在另一次能力测试中,他显示出医学才能,于是又被送到了哈弗福德学院(Haverford College)医学预科学医。期间他被诊断出脑瘤(一说骨瘤),手术植入了一块金属板。1945年他进入纽约一家医学院,但是他发现学校里“不鼓励思考,只是死记硬背”,9个月后就退学了。
在又一次脑部手术之后,1946年Backus退伍了。他自己住在纽约,不知前途何在。他后来回忆说:
“我真不知道自己这一辈子到底该干什么。我想弄一套好的高保真音响,可那时候这种东西还不存在。于是,我进入了一家无线电技师学校。在那里我遇到了一位好老师——这可是我人生的第一次,他让我和他一起为一个杂志计算某些电路的特性。计算很繁琐,但是它让我对数学发生了兴趣。我发现,原来数学是有实际用途的。”
他从头再来,进入哥伦比亚大学学习数学。在1950年毕业前,他偶然地参观了IBM公司麦迪逊大街计算机中心,被宏伟的SSEC大型电子管计算机迷住了。其间他告诉讲解员自己在找工作,这位女讲解员建议他去找主管谈谈。Backus觉得自己蓬头垢面邋邋遢遢的,不想去,但架不住讲解员一个劲儿的鼓励。没想到,只是被不那么正式地口头提问了一些数学题,他就当场通过,这样进入了IBM。
1950年,他成为IBM的程序员。他的工作除了编程(使用打孔带)之外,就是维护那台1948年建成、由一万多个真空管和两万多个继电器组成、还为1969年阿波罗登月计划立下汗马功劳的SSEC。三年中,除了一个复杂的计算月亮位置的程序外,他还开发了一个名为Speedcoding的程序,第一次实现了用诺伊曼提出的比例因子存储和计算浮点数。
二进制层次编程的艰辛和困难,使Backus意识到高级语言的必要性。1953年,他向IBM高层提交了一份备忘录,提出为新型的704计算机开发一种高级编程语言,降低开发成本。他论证说,当时程序员的薪水已经赶上硬件成本。负责应用科学部的Cuthbert Hurd很快就批准了这一计划。Backus后来称赞:“他真的很懂行。”
这其中还有一个小插曲,当时冯诺伊曼正在担任IBM公司顾问,每周一次“升堂”审查公司的各种新科研计划。他当时看到了FORTRAN的想法,丝毫没有兴奋之感,反而这样问Backus:“为什么除了机器语言之外,你还想弄点别的呢?” 当时也在场的Frank Beckman回忆到,冯诺伊曼将这一计划斥为“图灵short code概念的一种应用”。有趣的是,冯诺伊曼此后还一直坚持这种观点,他在普林斯顿的学生Donald Gillies回忆说,为了不像大家那样手工将程序汇编为二进制代码,他曾经开发了一个汇编程序,冯诺伊曼发现后非常生气,说:“这是在浪费宝贵的科学计算设备来干琐碎的杂事!”
1954年,Backus很快招募到了Irving Ziller和Harlan Herrick,开始了项目的开发。项目小组最后有10个人,都是二三十岁的年轻人,背景出处各不相同,Backus注重的只有一点:解决问题的能力。Backus的管理非常灵活,没有太正式的工作时间,虽然可能会很长,冬天工作后大家都出去打雪仗,对于公司一套严格的考评制度,Backus认为不适合程序员,将其束之高阁。
设计一 种语言并不难,描述FORTRAN语言草案的论文Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN于当年年中发表。难的是编译器的设计,Backus本来希望在六个月内完成,最后却花了两年多。1956年,语言手册完成,1957年4月,有25000行代码存储在磁带上的第一个FORTRAN编译器发布。一个新的时代开始了。
受FORTRAN影响,ACM和德国应用数学与力学学会(GaMM)共同提议开发一种标准化的高级语言。1958年5月于苏黎世举行的国际性会议群贤毕集,有Backus、Bauer、Perlis等等大师。这个国际协作的结果,就是ALGOL语言。
开发FORTRAN之后,Backus开始思考计算机程序设计的其他基础方面,1959年他提出了BNF。后经2005年图灵奖得主Peter Naur改进,又经1984年图灵奖得主N. Wirth扩充为EBNF(Extended BNF)。
此后,Backus在反思FORTRAN设计得失的基础上,全力从事函数级程序设计语言的研究和开发,成果包括FP语言和FL语言。
《纽约时报 》的讣告是这样结尾的:
“创新,” Backus先生说,“就是不断地尝试和出错的过程。”
“你需要勇于失败,” 他说,“你不得不想出许多想法,然后努力工作,只是为了证明这些想法不可行。如此不断反复,最后你就会发现那个可行的想法了。”
|
|