科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条

历史版本1:约翰·巴库斯 返回词条

约翰·巴库斯(John Backus):FORTRAN之父

主要成就:如今的计算机之所以如此简单、易用,在许多方面与约翰•巴库斯的发明有关,他在三项重大的发明中扮演了主角:第一个高级程序设计语言FORTRAN;为高级语言提供描述语法规则方法的巴库斯—诺尔范式;以及一种称为FP(功能编程)的函数程序设计语言。1976年,巴库斯获国家科学勋章,1993年获Draper工程奖。

(图)John BackusJohn Backus

姓名(中文) 约翰·巴库斯

姓名(英文) John Backus

出生年月 1924年12月3日 – 2007年3月17日
出生国家、地点 美国费城

教育背景 1949年,哥伦比亚大学基础学院数学学士学位
1945年3月,进入纽约第五大街医科学校
第二学期因不好好学习被校方开除
1942年,进入弗吉尼亚大学

职业背景 1991年,巴库斯退休

1949年,受聘为IBM计算机中心SSEC

计算器工作就像人类的语言有其最基本的单位--语素一样,电脑的语素就是0和1,人类可以把指称万事万物的符号变为0和1的组合形式。让电脑去“思维”。这一0和1又称为机器代码,是居最底层的。再上一层是加、减、乘、除等等算术命令和控制这些运算的命令。这些命令简称为指令。这些指令的集合就是汇编语言。不同的机器有不同的汇编语言,就像每个民族有不同的文字一样。再高一层,就是高级语言,如我们熟悉的BASIC、FORTRAN。联系高级语言和汇编语言的是编译器。指令是操纵电脑运行的信号,通过一个或多个相关的逻辑组合,形成适合电脑处理的指令序列,就是程序。程序的综合就是软件。如果说集成电路是电脑的“脑髓”,那么,软件就是电脑赖以思维的语言。而指令是电脑语言的语句,程序就是用这些电脑语句按一定的语法书写的语句的集合。熟练运用这些语句并符合语法则成了我们常说的编程。没有语法或不符合语法,我们简直无法交流,同样,没有程序的电脑只是一台停止转动的机器,错误的程序更会使电脑发生致命的错误。

目录

[显示全部]

不学无术回目录

如今的计算机之所以如此简单、易用,在许多方面与约翰•巴库斯的发明有关,他在三项重大的发明中扮演了主角:第一个高级程序设计语言FORTRAN;为高级语言提供描述语法规则方法的巴库斯—诺尔范式;以及一种称为FP(功能编程)的函数程序设计语言。这些发明并没有什么奇特的。“我们并不知道我们想要什么和怎样去做。这只是顺其自然的事。……现在看来,当时我们做的是极其笨拙的。”

1924年,巴库斯出生于费城。父亲在火药公司从普通员工升到了首席化学家的高职。一次大战期间,老巴库斯曾为军火官员,后改做证券经纪人。因此等巴库斯降世时,父亲早已在战后的繁荣中发了财,使巴库斯从小衣来伸手,饭来张口。他在特拉华州的威尔明顿(Wilmington)度过了童年,然后就读于宾夕法尼亚洲波茨敦市很有名望的希尔学校。但当时的巴库斯就像一个不学无术的小混混。“我年年不及格,从未学习过。我讨厌学习,只是到处走来走去打发时间。”这样的生活十分压抑,唯一的乐趣就是:“每年我都去新罕布什尔州的暑期学校,夏日里可以去划船,度过美好的时光。”

1942年,巴库斯总算艰难地毕业了,上了弗吉

(图)John BackusJohn Backus

尼亚大学。父亲希望他子承父业,劝他学化学。巴库斯到是挺喜欢化学世界神奇的理论知识,但却讨厌实验室。他将大部分时间泡在舞会上,等着被征兵入伍。到第二学期末,干脆每周只上一堂课,还是轻松的音乐欣赏课。最后,校方将他开除了。1943年,巴库斯就参了军,成了一名下士,在乔治亚州的斯图沃特堡率领一个防空小队。一次能力倾向测试差点改变了他的人生方向,军方准备送他到匹兹堡大学学习工程预科课程。但随后的一次医科能力测试又改变了方向,将他送到哈佛富德学院学习医学预科。而他的战友们全都送到了美军和德军交火的战场上。

学习期间,巴库斯到大西洋市医院的神经外科病房护理重伤员。一次偶然机会,他被诊断出脑袋上有脑瘤,于是他的头内装进了一块金属板。

1945年3月,巴库斯进入纽约第五大街医科学校,但很快又厌倦了。“医科学校的人不喜欢思考。他们只会背书,那是他们需要你做的全部,你不需要去思考。”于是只熬了9个月,巴库斯就呆不住了。1946年,他结束了军队生涯。

巴库斯发现自己脑袋里的那块金属板老是不对劲,就干脆找到技术员并自己动手设计了一个。这是巴库斯对自己大脑的大胆改造。多年后,巴库斯开始为电脑进行改善。

为计算机服务回目录

从此,巴库斯便再也没做过医学方面的工作。他在纽约租下一套每月18美元的小公寓,陷入了茫然。“我的确不知道自己到底想做什么。我觉得自己想要的只是一套高保真音响,因为我喜欢音乐。”

但那时还没有这种东西,于是巴库斯就到一所无线电技术学校学习,结果遇到了第一位好老师,他与巴库斯合作为一家杂志计算放大电路曲线的特性,这是一件乏味又烦人的工作。但偏偏使巴库斯发现了数学的魅力,是他一下子感到数学应用的乐趣。

(图)John BackusJohn Backus

于是,再度调转枪口,到哥伦比亚大学基础学院注册学习数学课程。对数学他也有好恶之分,不喜欢微积分,但喜欢代数。1949年,25岁的巴库斯差几个月就可拿到数学学士学位了。

一个晚上,他参观了IBM公司曼迪逊大街的计算机中心,瞻仰了一番IBM早期的电子(真空管)机器SSEC。参观过程中,他告诉导游自己正在找工作,导游鼓励他去找主管谈谈。“我说算了。我看上去又散又乱,但她一再鼓励,我便去了,作了一次测试便通过了。”

巴库斯受聘为SSEC计算器工作,这个庞然大物现在看来还不算是真正的计算机。它没有存储软件的存储器,程序必须通过穿孔纸带输入。由成千上万个电动机械部件组成,不但运行缓慢,而且很不可靠。巴库斯必须时时守在旁边,“因为这家伙每3分钟便会停止运行或出错。你必须设法让它重新运行。”当然,最难的就是为这笨家伙编写程序。

巴库斯就像SSEC计算器的外设,整整工作了3年,这台不能存储数据的计算器,最终被IBM抛弃了,但巴库斯却从中学到了很多东西,这段时间他的最大贡献就是开发了“快速编码”(Speedcoding)程序,以解决小机器无法计算大数字的问题。但巴库斯也初尝了编程的滋味。“程序设计之所以如此昂贵,是因为必须雇佣很多程序员用‘汇编’编程。汇编语言消耗大量时间,而且调试大量出现的错误也是一件非常费力的工作。”

FORTRAN诞生回目录

早期电脑语言的原始,的确带来很多的麻烦,让用户们头痛不已,连声抱怨,对常人来说简直如巫术和咒语。这已严重影响电脑商业化的进展。1952年春,IBM在推出IBM 701型电脑时,在设计思想上和“马克3号”机相仿。IBM 701的内存在当时很可观,用威廉姆斯管做主存储器,内存有4096个36位字长的字,能包含33种不同类型的指令,每一个程序的指令肯定不亚于4000条。当时IBM最快的打印机,每分钟能打150行,算起来,光打印一个程序就要花半个多小时,更不用说来读它们了。而且还要经常出错。

(图)IBM 701IBM 701

巴库斯开始考虑:“一台机器能否充分有效地把一种数学语言转换成日常经济的程序,同时使整件事的成本降

低?”他认为更主要的挑战是设计转换器而不是设计语言本身。当时他对进行的整个编程工作失去信心,为技术不能突破而苦恼。同时他更清醒地意识到程序员本身也阻碍了技术的进步。

回忆当时的情形,巴库斯后来在1980年写道:“现在的程序员常常受到上级的压力,他们只知道程序怎么写,要写多长。工作不再是一份神秘的艺术,创造力也是从一本枯燥、奇怪的编程和操作系统手册里寻找出来的。而在50年代初期,编程是一门黑色艺术。一般的编程原理不存在,每个问题都需要独立去解决,神秘性取决于程序员个人,一个程序的成功与否主要依赖于程序员自身的技术水平和创造力。”那时,程序员没有太多的耐心,不能坚持到将一种想法完全开发出来或完全写下来。如何改变编程低效率的现状,如何摆脱汇编语言的束缚,成了巴库斯思考的中心。

1953年12月,巴库斯给他在IBM公司的老板斯伯特•赫德写了一份备忘录,建议为IBM 704机设计一种新的程序设计语言,实用性更强的高级程序语言,这就是后来的公式式翻译语言——FORTRAN。

但巴库斯却受到了电脑之父冯•诺伊曼的强烈反对,当时他是IBM公司的顾问,冯•诺伊曼并不认为程序语言是个大问题。实际上,他对程序设计的费用不了解,因此认为FORTRAN是个浪费。但赫德还是批准了这个计划。巴库斯找了几个有经验的程序员和刚毕业的年轻数学家。他们几乎一半的工作是为了生成效率更高的机器码。巴库斯的工作室设在麦迪逊大街590号IBM总部附近一个大厦里。后来,他们搬得离IBM更近,就在麦迪逊590号附楼19层的一个房间。巴库斯的同事们也越来越多,像后来做出突出贡献的数学家和专业打字员罗伯特•A•尼尔森。而当时参与进来的路易斯•海伯特刚刚从数学专业毕业,他对计算机唯一的认识就是它们存在着。

推广比发明更重要回目录

尽管,当时的FORTRAN项目组从来没有想过他们的编程语言会应用在IBM704以外的计算机上,他们还是斗志昂扬。因为他们知道,如果他们成功了,能设计出更可靠的编程方法,能使IBM704更快、更经济地运转,就能够引起业界相当的震动,甚至对整个计算机界产生巨大影响也不是不可能的。

(图)John BackusJohn Backus

他们首先要给这种语言命名,结果发现在漫长的日子里逐一考虑合适的名字是个很有意思的消遣。巴库斯一些比较好的老名字,但却一一被同事否定了。有一天他提议用程式转换——FORTRAN,大家对它反应冷淡,但没有人来否定它。名字就这么定下来了,有总比没有要强。在项目组正式运转后,每当有人询问何时能完成,他们总是给予相同的回答:6个月,6个月就好了。他们真诚地相信这个项目到那时就会结束。但实际上它花了三年时间。

在FORTRAN项目组内,没有等级制度,大家被共同的心愿连接起来,工作氛围极其振奋。巴库斯说,大家都有提出新问题,探讨新问题的愿望,哪怕最后结果是一条死胡同,也不妨碍他们继续探讨和提出新的问题。他们并不是进行语言的设计,而是进行生成有效程序汇编语言的设计。他们一边开发,一边创造语言,希望生成一个在编程时可以更方便使用的程序。

1954年秋天,巴库斯已经成为FORTRAN项目组的管理者。11月10日,他们发表了第一篇论文《FORTRAN初期报告——用于IBM机器惯用转换系统》。他们在第一份报告中流露出乐观的情绪。FORTRAN可以提供解决问题编码的繁杂技术,这是人类本身从愿望上无法实现的。

1954年末,巴库斯对订购IBM 704的客户进行了6场关于FORTRAN的报告。主要是向用户解释FORTRAN并听取他们的意见。用户们并没有提出什么意见,当时编译器还无法完成,他们不相信真的会有汇编语言制作出来,并能生成有效的目标程序。没有反馈,没有建议,没有批评,这就是听众们的反映。

(图)IBM 704IBM 704

1957年4月,西屋电气公司幸运地成为FORTRAN的第一个商业用户。FORTRAN的第一个应用程序运行正常,但不久便发现编辑器中有大量的错误。巴库斯小组又花了6个月进行修改。

巴库斯领导这个杰出的小组,极耗费精力地努力了整整4年,但他很谦虚地说:“我替那么多人收获了如此众多的荣誉,看起来很不公平,是大家创造了FORTRAN语言。我的主要职能只是午餐后开始进行象棋比赛,让大家下午两点继续工作。”

    FORTRAN有三大类共49个基本字符,包括26个英文大写字母、10个阿拉伯数字以及其他专用符号,主要由算术、控制、不可执行和输入输出四种语句组成,其优点是标准化程度高、便于程序互换、计算速度快等。FORTRAN语言非常适合于解决工程技术和科学计算问题,其表达式也与通常数学形式相似,是早期工程技术和科学计算的专用语言。

FORTRAN使电脑语言走出原始蒙昧的状态,在软件史上,有着凿混沌开天地的意义。这也使以程序编写为核心的软件成为一种产业的肇始。当然,FORTRAN的成功也不全是IBM一家之力,巴库斯是在韦勒和格莱斯•霍普基础上取得突破性进展的,格莱斯在“尤尼法克”(UNIVAC)上开发Flow-Matic语言中,类似英语的语句和字母的形式就被吸收,韦勒在“爱达赛客”(EDSAC)上开发的“子程序跳跃”和“初始化指令”更对FORTRAN有直接的推动。  

再接再厉 回目录

    FORTRAN语言是最早和最通用的电脑高级语言之一,从1957年开始,广泛使用,成为当时科技界的“福音书”,对当时的火箭、导弹、人造地球卫星等宇航技术的发展有深巨的影响。尤其是“阿波罗”登月计划中,人们都知道电脑做了很大的贡献,若要细细论功,则有两位,一是德州仪器公司的集成电路,再是IBM的FORTRAN语言。因此,FORTRAN语言使电脑的工业应用成为可能,是推动二战以后西方工业经济奇迹复苏和进入第二次工业革命的无形力量,有人称之为“看不见的蒸汽机”。

(图)John BackusJohn Backus

巴库斯50年代末才停止FORTRAN的工作,但他对程序设计的贡献却刚刚开始。

1958年5月,国际商业和学术计算机科学家委员会在苏黎世召开大会,目标是改进FORTRAN,并设计一种单一的标准化的计算机语言,这就是Algol。Algol克服了FORTRAN的一些弱点。巴库斯喜欢Alogl中蕴含的思想,但对如此清晰表达感到困难。为解决这个问题,巴库斯使用了上下文无关文法的形式体系。这项偶然的发明最后成为著名的巴库斯—诺尔范式。

1959年6月,巴库斯揣着论文参加联合国教科文组织的Algol大会,试图解释他关于精确语法的思想:“当然,这篇论文我写得太晚了,没有收录在大会的报告集中。我手拿着论文去了大会。因此没有很好地分发它。但丹麦数学家彼得•诺尔读到了它,并作了许多修改,成为当时描述语言语法的最好参考书。”

巴库斯发明了世界上最早和最流行的程序设计语言,并发展了一种可以描述许多语言的符号系统。他对FORTRAN的长期应用也极为满意。FORTRAN保持使用了30年,还有什么计算机可以用5年以上,什么程序在两三年后仍然是最好的?1960年,巴库斯开始了他研究生涯的第二个阶段,这一阶段耗费了10年,最后以失败告终。“那10年我工作地非常努力,”他后来回忆到,“不断有足够的证明使我相信在取得进展。但是最后,我不得不面对这一事实,我没有得出所希望的结果。我不得不放弃。”他一直在IBM研究部门工作,这个部门不太情愿地支持了他7年。巴库斯说:“这个项目的失败很痛苦,我非常喜欢这份工作,很难描述那种感觉,非常绝望,我觉得自己就像最后一次整理那些笔记。”

70年代,巴库斯开始了他研究工作的第三个阶段,这一次,他开始寻找编程更好的方法,希望研究出“功能级的语言”。他坚持认为,编程语言变得越来越复杂,非专家不易使用,应该有所突破了。他注意到成千上万的人都希望用家用越来越便宜的计算机,但是如果他们想有效地使用他们,必须能够自己编程。1977年,巴库斯在图灵奖受奖演说时讲到:“程序设计能从冯•诺伊曼风格中解放出来吗?”他向计算机科学界介绍了一个全新的概念:程序员能够知道自己想要做什么,而并不需要知道怎样做。在Lisp语言(主要用于人工智能)和APL语言的基础上,巴库斯提出了FP语言,其目标是通过数学函数构造程序,具有讽刺意味的是,包括FP语言在内的函数语言,并没有流行起来,主要因为函数语言难于编译成有效的形式。

巴库斯曾在文章中写道:“新的功能性语言,是一个可以选择的功能性编程方式,它的基础是用形式综合来创立程序。功能程序解决结构数据,这些数据常常是非重复性、非循环的,具有等级结构,不用命名它们的自变量,不需要复杂的生成机械功能来应用。综合形式可以用在高级程序中,来建立更高级的程序,这在常规程序中是不可能的。”研究者的生活孤独,有时会没有成效,看不到短期的利益。巴库斯对此深有感触:“我做的是失败的生意。你从事某种工作,失败了,再接着干。这是非常痛苦的,你要不断寻找排遣的方法。”不过巴库斯此刻的失败由于他在FORTRAN上的重大突破而容易接受。他因为开发FORTRAN而获得的承认也给了他面对挫折的勇气,对研究的热爱。

1976年,巴库斯获国家科学勋章,1993年获Draper工程奖。1991年,巴库斯退休,彻底退出了计算机科学界,同时也从科学领域撤退。他只是冥想和阅读一些个人反省的书籍。他写道:

“大多数科学家是因为惧怕生活而成为科学家的。在科学中有所成就是非常诱人的,因为不必与人发生冲突,不必感受人际关系的痛苦,不必在世界上艰难前进就可以成就这些东西。脱离尘世是多么地诱人——这个有几分清净的世界,你可以全力施展你的才华,而没有任何痛苦。解决问题的痛苦和生活中的痛苦比起来是微不足道的。

内省不是一种科学活动:它不可重复,没有关于怎样内省和你要追求什么的好理论。通过对自己的反省可以欣赏到宇宙的神秘,这是很奇怪的。你并不需要试图去发现物理定律。”

John W. Backus 走了... 回目录

根据IBM公司2007年3月20日公布的消息,被誉为“Fortran语言之父”的美国计算机先驱人物约翰·巴克斯3月17日因病逝世,享年82岁。

巴克斯曾在IBM公司工作多年,1991年退休。巴克斯于上世纪50年代开发出了著名的编程语言Fortran,这是第一种高级编程语言。在此之前的机器语言,写一段简单的程序,往往需要很多复杂的指令,然后靠机器直接执行。而Fortran语言将这一过程“抽象化”,程序员只需输入相对简单的指令,计算机就能将其自动翻译成机器语言。

(图)John BackusJohn Backus

因此,从一定意义上可以说,Fortran改变了人与计算机之间的“交互方式”,并为后来的现代计算机软件开发奠定了基础。

美国计算机学会评奖委员会主席霍宁评价说,Fortran语言的诞生是计算机领域的一个巨大突破,它改变了“游戏方式”,“而这种改变在计算机业的历史上仅有过两三次。”巴克斯因此也获得了1977年的图灵奖,图灵奖是计算机界最高荣誉之一。

巴克斯的教育履历令人“刮目相看”,中学时因为厌学,成绩一塌糊涂,不得不另外补课。后在化学家父亲的逼迫下,他到弗吉尼亚大学学习化学,但6个月后便以退学告终。应征加入美国陆军后,他又学起了医学,后来发现无线电工程更有乐趣,遂放弃医学改学工程,但最终却决定钻研数学,并获得了哥伦比亚大学的硕士学位。毕业前,他在纽约曼哈顿岛参观IBM公司,并被当场聘用。

巴克斯是个特立独行的人,以着装为例,他偏爱牛仔裤,与IBM公司员工的传统着装风格格格不入,但他备受公司器重,在那里一直干到退休。

早在上个世纪50年代,前IBM计算机科学家巴库斯开发了FORTRAN编程语言(注:FORTRAN是英文Formula Translator的缩写,即“公式翻译”之意)。FORTRAN是全球首款应用最为广泛的计算机编程语言。巴库斯已于去年辞世,享年82岁。在巴库斯年轻时,即被诊断为患有脑肿瘤。在进行手术后,医生在他的脑袋中放置一块金属板。不久后,所更换的第二块金属板就由他本人亲手设计。

获得的荣誉列表回目录

Named an IBM Fellow (1963)[7]
Awarded W.W. McDowell Award (1967)[1]
Received National Medal of Science (1975)[2]
Awarded ACM Turing Award (1977)[3]
Awarded degree honoris causa (1989)[8]
Awarded Draper Prize (1993)[9]
Awarded Computer History Museum Fellow Award (1997)[10]
Asteroid 6830 Johnbackus named in his honor (June 1, 2007) †

参考文献回目录

→如果您认为本词条还有待完善,请 编辑词条

标签: John Backus 约翰·巴库斯 John Warner Backus John W. Backus