阴影
阴影 阴影
第C0006版:人物
3  4  
PDF 版
· 巴克斯:从留级生到编程天才
收藏 打印 推荐  更多功能 
返回主页 | 版面导航 | 标题导航      
上一期  下一期  
浙江日报报业集团主办      
3上一篇  下一篇4  
2007年3月26日     收藏 打印 推荐 朗读 评论 更多功能 
巴克斯:从留级生到编程天才
》》》》》 本版撰稿:林晓
  50年前的春天,一个叫约翰·巴克斯的美国人开发出了一种全新的计算机语言——Fortran语言,把计算机带入了一个新时代。而50年后的这个春天,82岁的巴克斯在美国俄勒冈州静静地离开了这个世界,离开了陪伴他大半生的计算机。

  巴克斯绝对是个计算机界的编程天才,从第一个高级编程语言Fortran,到曾最广泛流行的“元语言”BNF(巴克斯范式),他的每一次创造都令人兴奋和惊奇。因为他的杰出成就,巴克斯还在1977年获得了美国计算机协会授予的的图灵奖。图灵奖是计算机界最负盛名、最崇高的一个奖项,对获奖条件要求极高,评奖程序极严,一般每年只奖励一名计算机科学家,有“计算机界的诺贝尔奖”之称。

  但世界是复杂的,世界上的人和事更是处在瞬息万变之中,叫人捉摸不定。谁能想到,就是这个编程天才巴克斯在20岁前却是个不爱学习、喜欢游荡的纨绔弟子,甚至还曾由于成绩太差而延迟毕业呢?

  青年时代浑浑噩噩

  巴克斯1924年12月3日生于美国的历史名城费城,父亲是一名阿特拉斯火药公司的职工。当时,工厂常常出事故,发生爆炸,产量也上不去,但是谁也找不出原因。老巴克斯是一个机灵的人,他分析问题极有可能与从德国进口的昂贵的温度计可能并不那么精确有关,于是说服公司派他远渡大西洋去德国了解和学习温度计的制造工艺,最后带回了一批好的温度计,终于解决了工厂的安全作业难题,他自己也由一名普通员工被提升为公司的首席化学家。

  第一次世界大战期间,美国的军火企业都开足马力生产,大捞了一把,老巴克斯也因此显赫一时。战后,由于没有获得原来许诺给他的在杜邦公司的职务,他愤而离开化工界、军火界,改做证券经纪人,倒也发了一笔大财。因此,童年和少年时代的巴克斯生活条件相当优越,过得无忧无虑。

  在东海岸特拉华湾的海滨城市威尔明顿度过童年以后,巴克斯进入宾夕法尼亚州波茨敦市很有名望的希尔学校学习。但他并不爱学习,只盼着暑假到新罕布什尔州划船、嬉戏,度过美好的时光。大概就是因为这样的学习态度,巴克斯的成绩从来就是不及格,拖了两年才勉强毕业,并在1942年进了弗吉尼亚大学。由于本来就不爱学习,加上第二次世界大战已经爆发,1941年12月7日日本偷袭珍珠港以后,美国正式宣布参战,巴克斯更是只等着应征入伍,不思学习,把大多数时间花在舞会上,每周只去上一节轻松的音乐欣赏课,终于被学校处分,扫地出门。

  进入IBM改变人生

  1943年巴克斯参军入伍,在乔治亚洲服役,当了一名下士,率领一个防空小队。在部队组织的一次能力测试中,巴克斯不经意地显露出了他的聪明和才能,受到上级赏识,陆军决定送他上学深造。于是,当他的战友们都被送往二次大战的战场上去的时候,巴克斯却进入了哈弗福德学院(Haverford College)的医学院读预科。但巴克斯对医学不感兴趣,也不喜欢那里的人,觉得他们只会背书而不会思考。于是他只学了9个月的医学就离开了那里,转到哥伦比亚大学学习数学。

  经过这番磨练,巴克斯已经从混沌走向清醒,开始认真学习。1949年他取得学士学位。但毕业时,巴克斯对自己的未来仍然没有打算,不知道到哪里去,也不知道干什么好。

  一个偶然的机会,他来到IBM公司的计算中心参观。在那里,他见到了IBM早期的SSEC计算机(Selective Sequence Electronic Calculator)。SSEC是一台电子管计算机,几个大柜子占满了一间大屋子,到处是电子管和电缆、电线。由于程序必须通过穿孔纸带输入,机器的成千上万个电子机械部件又不可靠,经常出故障,因此机房里操作员、管理员、程序员们忙成一团,查线路的,查手册的,讨论和争论问题的……气氛忙乱而热烈。巴克斯当时并不了解SSEC还不是真正意义上的电子计算机,它连存储程序的存储器都没有,但看到现场的环境和气氛,立刻心里一亮:这正是他要找的工作!这正是适合他性格的富于挑战性的工作!第二天他便向IBM公司的主管提出求职申请,经过一次测试顺利通过,巴克斯从此开始在SSEC的三年工作。

  不知疲倦的发明家

  人们称巴克斯为“不知疲倦的发明家”,事实确实如此。进入IBM以后,巴克斯就全身心地投入工作,成为了一个出色的程序员。

  巴克斯接手的第一个较大的项目是计算“月历”,这是一个相当复杂而困难的问题,因为月历要能给出一年中任一时刻月亮所处的精确位置坐标,但巴克斯出色地完成了任务。接着,巴克斯和同事海尔里克又一起成功地开发出了一个叫Speedcoding的程序,用于浮点数运算。

  这两个程序的成功奠定了巴克斯作为出色的程序员在公司的地位,赢得了同事的尊敬和上司的器重。但巴克斯是一个永远不满足于现状、总想变革现实的人。鉴于当时用机器语言(也就是二进制代码0和1)进行编程和调试程序所带来的种种弊端——效率低、难于检查和发现问题、不便于交流,以及由此而导致软件开发费用高昂等等,经过深思熟虑,巴克斯于1953年向IBM的老板卡斯伯特·赫德提交了一个备忘录,建议设计一种接近人类语言的编程语言代替机器语言,以从根本上提高编程效率,降低编程费用。

  意想不到的是,巴克斯这一对计算技术的发展起了如此重大影响的历史性建议遭到了当时任IBM公司顾问的冯·诺伊曼的强烈反对,在他看来巴克斯的建议没有必要,也是不切实际的。不过赫德还是批准了巴克斯的计划,这使Fortran的诞生成为可能。

  1957年4月,经过巴克斯和他的同事们的艰苦努力,Fortran(“公式翻译器”,即formula translator各取前几个字母组合而成)语言第一次在西屋电气公司订购的704计算机上成功运行,标志着一个时代(机器语言编程时代)的结束,另一个时代(高级语言编程时代)的开始。

  Fortran 语言主要用于数值计算,它的特点是接近数学公式,简单易用,功能逐步扩大。有了Fortran语言,程序员只需输入相对简单的指令,计算机就能将其自动翻译成机器语言。作为世界上第一个高级程序设计语言,Fortran在一定意义上改变了人与计算机之间的“交互方式”,对其后出现的上千种高级程序设计语言都有或大或小的影响。

  一生获得殊荣无数

  开发出Fortran语言后,巴克斯的脚步并没有停止。他关注的重点由定义语言本身转为如何清晰地描述和表达语言这个问题上,也就是要创建一个“元语言”(metalanguage)。

  经过不懈探索,1959年6月,在联合国教科文组织即UNESCO于巴黎召开的一个讨论程序设计语言的语法和语义的会议上,巴克斯在他提交的一篇论文中提出了如今众所周知的“巴克斯范式”BNF(Backus Normal Form)。巴克斯范式以递归方式描述语言中的各种成分,凡遵守其规则的程序就可保证语法上的正确性。它由于其简洁、明了、科学而被广泛接受,成为描述各种程序设计语言的最常用的工具。

  此外,巴克斯还是归约机(reduction machine)这一全新计算机体系结构的首创者。1972年,他在其为IBM公司所撰写的研究报告《归约语言及无变元的程序设计》一文中最早提出了归约的概念。

  巴克斯卓越的成就让他获得无数殊荣。1975年,他获得美国“全国科学奖章”;美国计算机学会将1977年度的图灵奖颁予巴克斯;1993年,美国工程科学院将其最高荣誉查尔斯·斯塔克·德雷珀奖授予了巴克斯。

  从入行直到1991年退休,巴克斯长期在IBM公司工作,尽管偏爱牛仔裤的他和IBM员工的传统着装风格格格不入,但他却一直备受公司器重。他在1979年接受IBM员工杂志《Think》采访时曾风趣地说,他大部分的软件开发最初的缘由都是因为自己的懒惰。“我不喜欢写程序,所以当时在IBM701(一台早期计算机)工作,为计算导弹弹道编写程序,我就开始琢磨开发一个编程系统,可以让编写程序变得简单些”。Fortran正是这样应运而生。

3上一篇  下一篇4  
收藏 打印 推荐 朗读 评论 更多功能 
钱江晚报 人物 C0006 巴克斯:从留级生到编程天才 》》》》》 本版撰稿:林晓 2007-3-26 钱江晚报c00062007-03-2600010;钱江晚报c00062007-03-2600005;钱江晚报c00062007-03-2600011;钱江晚报c00062007-03-2600012;钱江晚报c00062007-03-2600018;48257178002CE173482572A800425715 2