本书介绍了图灵及自1966年至今图灵奖的获得者的工作和事迹。通过对20世纪下半叶及21世纪初有代表性计算机科学家的介绍,多方位、多视角地反映计算机科学技术半个多世纪来的发展历程。本书在一定程度上反映了计算机体系结构、程序设计语言、算法设计与分析、操作系统和编译程序、数据库技术、计算复杂性理论、软件工程、人工智能等计算机科学技术主要分支的形成过程和发展概况。通过追寻成功者的足迹,给人以必要的启迪,读者可以从阅读本书中吸取成长和成功所必需的养分。 作者简介: 吴鹤龄,1937年5月出生,籍贯上海市金山区。北京理工大学计算机学院教授。1998年退休后从事科普创作,除本书及其姐妹篇《IEEE计算机先驱奖》外,尚有《好玩的数学》、《七巧板、九连环和华容道》、《囚徒的困境》、《迷宫趣话》、《魅力魔方》等多部原创作品或译作问世,分别获得2009年国家科学技术进步奖二等奖、第三届台湾吴大猷科普著作奖翻译类佳作奖、第一届中国科普作家协会优秀科普作品提名奖、北京市第四届优秀科普作品奖、“科学时报读书杯”科学文化?科学普及奖等多项奖励,《七巧板、九连环和华容道》2008年被文化部和财政部选中列入“送书下乡工程”,《迷宫趣话》入选国家新闻出版总署第二届“三个一百”原创优秀图书出版工程。本人被评为2010年北京市高校“育人标兵”、2011年北京市和全国教育系统“关心下一代工作先进工作者”。 目录: 图灵和图灵奖 1966年图灵奖获得者:艾伦?佩利 ———ALGOL语言和计算机科学的“催生者” 1967年图灵奖获得者:莫里斯?威尔克斯 ———世界上第一台存储程序式计算机EDSAC的研制者 1968年图灵奖获得者:理查德?哈明 ———发明纠错码的大数学家和信息学专家 1969年图灵奖获得者:马文?明斯基 ———“人工智能之父”和框架理论的创立者 1970年图灵奖获得者:詹姆斯?威尔金森 ———数值分析专家和研制ACE计算机的功臣 1971年图灵奖获得者:约翰?麦卡锡 ———“人工智能之父”和LISP语言的发明人 1972年图灵奖获得者:埃德斯加?狄克斯特拉 ———最先察觉“goto有害”的计算机科学大师图灵和图灵奖 1966年图灵奖获得者:艾伦?佩利 ———ALGOL语言和计算机科学的“催生者” 1967年图灵奖获得者:莫里斯?威尔克斯 ———世界上第一台存储程序式计算机EDSAC的研制者 1968年图灵奖获得者:理查德?哈明 ———发明纠错码的大数学家和信息学专家 1969年图灵奖获得者:马文?明斯基 ———“人工智能之父”和框架理论的创立者 1970年图灵奖获得者:詹姆斯?威尔金森 ———数值分析专家和研制ACE计算机的功臣 1971年图灵奖获得者:约翰?麦卡锡 ———“人工智能之父”和LISP语言的发明人 1972年图灵奖获得者:埃德斯加?狄克斯特拉 ———最先察觉“goto有害”的计算机科学大师 1973年图灵奖获得者:查尔斯?巴赫曼 ———“网状数据库之父” 1974年图灵奖获得者:唐纳德?克努特 ———经典巨著《计算机程序设计的艺术》的年轻作者 1975年图灵奖获得者:赫伯特?西蒙和艾伦?纽厄尔 ———人工智能符号主义学派的创始人 1976年图灵奖获得者:米凯尔?拉宾和达纳?斯科特 ———非确定性有限状态自动机理论的开创者 1977年图灵奖获得者:约翰?巴克斯 ———FORTRAN和BNF的发明者 1978年图灵奖获得者:罗伯特?弗洛伊德 ———前后断言法的创始人 1979年图灵奖获得者:肯尼思?艾弗森 ———大器晚成的科学家,APL的发明人 1980年图灵奖获得者:查尔斯?霍尔 ———从QUICKSORT、CASE到程序设计语言的公理化 1981年图灵奖获得者:埃德加?科德 ———关系数据库之父 1982年图灵奖获得者:斯蒂芬?库克 ———NP完全性理论的奠基人 1983年图灵奖获得者:肯尼思?汤普森和丹尼斯?里奇 ———C和UNIX的发明者 1984年图灵奖获得者:尼克劳斯?沃思 ———PASCAL之父及结构化程序设计的首创者 1985年图灵奖获得者:理查德?卡普 ———发明“分枝限界法”的三栖学者 1986年图灵奖获得者:约翰?霍普克洛夫特和罗伯特?陶尔扬 ———硕果累累的算法设计大师 1987年图灵奖获得者:约翰?科克 ———RISC概念的首创者 1988年图灵奖获得者:伊万?萨瑟兰 ———计算机图形学之父 1989年图灵奖获得者:威廉?卡亨 域摇 目录: ———浮点计算的先驱 1990年图灵奖获得者:费尔南多?考巴脱 ———实现分时系统的功臣 1991年图灵奖获得者:罗宾?米尔纳 ———标准元语言ML的开发者 1992年图灵奖获得者:巴特勒?兰普森 ———从Alto系统的首席科学家到微软的首席技术官 1993年图灵奖获得者:尤里斯?哈特马尼斯和理查德?斯特恩斯 ———计算复杂性理论的主要奠基人 1994年图灵奖获得者:爱德华?费根鲍姆和劳伊?雷迪 ———大型人工智能系统的开拓者 1995年图灵奖获得者:曼纽尔?布卢姆 ———计算复杂性理论的主要奠基人之一 1996年图灵奖获得者:阿米尔?伯努利 ———把时态逻辑引入计算机科学 1997年图灵奖获得者:道格拉斯?恩格尔巴特 ———鼠标器的发明人和超文本研究的先驱 1998年图灵奖获得者:詹姆斯?格雷 ———数据库技术和“事务处理”专家 1999年图灵奖获得者:弗雷德里克?布鲁克斯 ———IBM360系列计算机的总设计师和总指挥 2000年图灵奖获得者:姚期智 ———计算理论领域卓越的开拓者 2001年图灵奖获得者:奥尔-约翰?戴尔和克利斯登?奈加特 ———挪威计算机科学家,面向对象技术奠基人 2002年图灵奖获得者:利维斯、沙米尔和阿德勒曼 ———最具影响力的公钥密码算法RSA的发明人 2003年图灵奖获得者:艾伦?凯 ———“个人计算机之父”及Smalltalk语言发明人 2004年图灵奖获得者:文登?塞夫和罗伯特?凯恩 ———Internet基础通信协议TCP/IP之父 2005年图灵奖获得者:彼得?诺尔 ———从天文学家到计算机科学家 2006年图灵奖获得者:弗朗西丝?爱伦 ———编译器优化理论与实践的先驱 2007年图灵奖获得者:克拉克、埃默生和希法凯斯 ———计算机辅助验证技术的先驱 2008年图灵奖获得者:芭芭拉?利斯科夫 ———计算机程序设计语言和系统的先驱 2009年图灵奖获得者:查尔斯?萨克尔 ———计算机系统架构的创新型设计大师 2010年图灵奖获得者:莱斯利?瓦利安特 ———成果丰硕的理论计算机科学大师 2011年图灵奖获得者:朱迪?珀尔 ———贝叶斯网络开创人工智能新天地 附录一计算技术发展大事记(截至20世纪末) 附录二向计算机专业师生推荐两本好书 人名索引(NameIndex) 总索引(GeneralIndex) 参考文献1966年图灵奖获得者: 艾伦·佩利 ———ALGOL语言和计算机科学的“催生者” 艾伦·佩利(AlanJ.Perlis)由于在ALGOL语言的定义和扩充上所作出的重大贡献,以及在创始计算机科学教育,使计算机科学成为一门独立的学科上所发挥的巨大作用而成为首届图灵奖当之无愧的获得者。 佩利1922年4月1日生于美国宾夕法尼亚州的匹兹堡。在卡内基理工学院(现卡内基-梅隆大学)所学的专业是化学,1942年毕业取得学士学位。因当时还处于第二次世界大战期间,而且在珍珠港事件后美国已宣布正式参战,因此佩利被应征入伍,在空军服役。战后他进入加州理工学院研究生院继续深造,改学数学,于1947年取得硕士学位,然后又到麻省理工学院(MIT)攻读博士学位,于1950年取得该学位。1951年他在美国陆军军械部设在马里兰州的阿伯丁试验基地内的“弹道研究实验室冶(冯·诺伊曼曾在该研究实验室当顾问)工作了一年,然后回到母校麻省理工学院参加“旋风”(Whirlwind)计算机计划,为“旋风”编制程序。为了说明佩利参与的“旋风”计划的意义,我们先简要回顾一下计算机诞生初期的发展历史。 大家知道,世界上第一台电子计算机叫做“ENIAC”(这是ElectronicNumericalIntegratorandComputer的词头缩写,意为“电子数字积分器和计算机”),是宾夕法尼亚大学莫尔学院根据上述阿伯丁弹道研究实验室为各种火炮计算弹道、编制射击表的需要于1943年6月与联邦政府签订10万美元的合同而研制的。项目由约翰·莫奇利(JohnWil鄄liamMauchly,1907—1980)负责逻辑设计,伊克特(JohnPresperEckert,Jr,1919—1995)负责电路设计。ENIAC是一台十进制并行计算机,能同时处理10个十进制数,采用电子管电路,时钟频率为100000Hz,加法时间为0.2ms,乘法时间为2.8ms,是一个占地1500ft2(约139m2),重30t,功耗150kW的庞然大物。它于1946年2月完成,未能参加第二次世界大战,但被洛斯阿拉莫斯(LosAlamos)国家实验室用于计算原子弹爆炸的突变问题,后来又曾用于阿伯丁的空军试验场,一直运行到1955年10月才停止工作。世人一直公认莫奇利和伊克特是ENIAC的发明者,但后来在两家计算机公司的诉讼中,法院判定他们剽窃了约翰·阿塔那索夫(JohnVincentAtanasoff,1903—1995)的构思和设计。这个涉及世界上第一台电子计算机的发明权案件曾经轰动美国。但有趣的是,虽然阿塔那索夫确实曾在1941年把自己关于构思计算机的设想告诉过莫奇利,后者也确实因此受到启发而写出了有关论证报告并设计出了ENIAC,但社会舆论似乎并不支持法院的判决,现在一提到ENIAC,几乎众口一词地仍然说是莫奇利和伊克特发明的,没有人说是阿塔那索夫发明的,这对美国法院的判决真是一种讽刺。 ENIAC虽然作为世界上第一台电子计算机而被载入史册,但它不具备存储程序的能力,程序要通过外接电路板输入。要改变程序必须改接相应的电路板,对于每种类型的题目,都要设计相应的外接电路板。这不是理想的结构,不符合冯·诺伊曼早就提出的存储程序的设想。那么世界上第一台存储程序式计算机是哪一台呢·有些资料认为是前面曾经提到过的曼彻斯特大学的MARK玉,但现在一般说法是英国剑桥大学威尔克斯(M.V.Wilkes,1967年图灵奖获得者)设计和完成于1949年5月的EDSAC。实际上,最早开始设计与实施存储程序式计算机的还是莫尔学院的EDVAC(ElectronicDiscreteVariableAutomaticComputer的词头缩写,意为“电子分离变量自动计算机”)。这是1945年3月(当时ENIAC正处于安装调试阶段),由冯·诺伊曼本人与莫奇利、伊克特等人经过两天会谈、讨论后制定的设计方案,采用电子管和半导体二极管,用用水银延迟线做存储器,时钟频率为1MHz,字长为32位。由于ENIAC的原因,EDVAC的研制从1947年才开始,加上莫奇利和伊克特两人后来因故离开了莫尔学院,使工程遇到了困难,1952年(有的资料说1951年)才完成,这才使威尔克斯的EDSAC“后来居上”(详见后面关于威尔克斯的介绍)。 但不管EDSAC也好,EDVAC也好,都是串行计算机(serialcomputer),即数据的传送和运算是按位逐一进行的,这样的计算机运算部件少,运算也简单,但速度慢,不能满足某些应用的需要。那么世界上第一台存储程序式的并行计算机是哪一台呢·这就是前述“旋风”计算机。“旋风”的主要设计者和研制者是MIT的弗里斯特(JayWrightForrester)。弗里斯特也是在受军方委托,用风洞来研究飞机稳定性时根据数据处理的需要而设计“旋风”的。“旋风”受EDVAC的影响采用存储程序方式,但鉴于处理飞机稳定性需要2000条以上指令,必须改串行为并行,但又要考虑机器体积不宜过大的因素,因此设计成16位字长的并行计算机。“旋风”的另一项创新是采用英国曼彻斯特大学威廉斯发明不久的阴极射线管做内存储器。“旋风”的研制工作从1946年开始,1950年试运行成功。20世纪50年代冷战加剧的形势下,美国军方对“旋风”寄予了极大希望,空军每年投资100万美元(试比较一下,ENIAC的总经费才10万美元),MIT也专门成立了著名的“林肯实验室”,以弗里斯特原先的实验室为核心,研究“旋风”的军事应用。1951年,“旋风”与当时著名的SAGE(SemiAutomaticGroundEnvironment,即半自动地面防空系统,包括全美17个防区)首次实现连接,把位于卡德角的防空警戒雷达所截获的信息送到MIT,由“旋风”计算机进行处理、分析和存储。这是历史上计算机与通信的第一次结合。弗里斯特还在20世纪40年代末和美籍华人科学家兼企业家王安(WangAn,1920—1990)几乎同时分别独立地发明了磁芯存储器,并把它用在“旋风”中以代替阴极射线管存储器,从而进一步大大提高了“旋风”的性能。 佩利在“旋风”上工作到1952年9月。之后他来到普渡大学,在那里他创建了全美大学中的第一个计算中心,开创了在大学中建立计算中心的先河。他出任普渡大学计算中心的第一任主任。在他的努力下,计算中心先安装了一台IBM的CPC计算机(CardProgrammedCalculator),以后更新为Datatron205。佩利为之设计了称为IT(InternalTranslator)的语言,并开发了IT的编译器。1956年佩利转到卡内基理工学院,“故伎重演冶,又推动该校成立了计算中心并出任主任,配置了IBM650计算机。佩利把他在普渡大学开发的IT及其编译器移植到IBM650上,并被美国许多大学所采用。在IT的基础上,佩利和史密斯(J.Smith)、佐轮(H.Zoren)、伊万斯(A.Evans)等人一起为IBM650设计并开发了新的代数语言和汇编语言。这些工作奠定了佩利作为计算机程序设计语言的先行者的地位。因此,当ACM于1957年成立程序设计语言委员会以便与欧洲的同行合作,设计通用的代数语言的时候,佩利被理所当然地作为最佳人选被任命为这个委员会的主席。 1958年,在苏黎世举行的ACM小组和以当时联邦德国应用数学和力学协会GAMM为主的欧洲小组的联合会议上,两个小组把他们关于算法表示法的建议合二为一,形成了ALGOL58(最初叫做“国际代数语言”,即InternationalAlgebraicLanguage,简称IAL。后来改叫ALGOL58)。在ALGOL58的基础上,1960年1月在巴黎举行的有全世界一流软件专家参加的讨论会上,确定了程序设计语言ALGOL60,发表了“算法语言ALGOL60报告”。1962年又发表了“算法语言ALGOL60的修改报告”。ALGOL60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言由一种“技艺”转而成为一门“科学冶,开拓了程序设计语言的研究领域,又为后来软件自动化的工作以及软件可靠性问题的发展奠定了基础。而后像1967年出现的首次引进“类型”的概念,把数据和被允许施行于这些数据之上的运算结合为一个统一体,因而成为现代抽象数据类型的开端以及第一个面向对象的语言SIMULA67。1971年出现的著名的PASCAL等语言,也都是在ALGOL60的基础上加以扩充而形成的。ALGOL60的主要特点有: 1.局部性。首次引进局部性概念,既扩充了语言的表达能力,又可节省内存空间,提高程序的紧凑性。 2.动态性。语言含有动态成分,从而明显提高了语言的表达能力(当然也相应增加了实现中的开销)。 3.递归性。递归性的引进开拓了软件的研究领域,促进了软件的发展。 4.严谨性。它的语法和语义均有严格的描述,特别是语法,采用了著名的巴克斯范式BNF,结构清晰,理论严谨。 在ALGOL58和ALGOL60的形成和修改过程中,佩利都起了核心和关键的作用。佩利之所以荣获首届图灵奖,主要就是因为他在这方面的重大贡献。 与此同时,在佩利的积极组织下,卡内基理工学院率先在大学生中开设程序设计课程。在此之前,有关程序设计的知识是作为“数值分析”课程内容的一部分予以介绍的。程序设计课的开设是计算机科学教育的开端。这引起了计算机的最大用户———美国国防部的重视,由其下属的高级研究计划署(ARPA)出面,资助对计算机科学及其教育进行立项研究,其结果是20世纪60年代中期首先在卡内基理工学院、斯坦福大学、麻省理工学院等少数几个大学建立起了计算机科学系和计算机科学研究生院,使计算机科学脱离电气工程、数学等学科而成为一门独立的学科。鉴于在其中所起的巨大作用,佩利被称为“使计算机科学成为独立学科的奠基人”———Afoundingfatherofcomputersci鄄enceasaseparatediscipline。而在卡内基理工学院(现卡内基-梅隆大学),佩利和西蒙(H.A.Simon)、纽厄尔(A.Newell)———后二人是1975年的图灵奖获得者———被称为“计算机系的三驾马车”。 1971年,佩利离开卡内基理工学院,加盟新成立的耶鲁大学计算机系,曾数度出任系主任,为耶鲁大学计算机系的建设和发展作出了重大贡献。其间,1977—1978年,他曾在加州理工学院执教。因此,佩利可谓“桃李满天下”,尤其是美国的第一批计算机科学博士生,绝大部分都是佩利的弟子。 佩利也是计算机学术组织和学术交流活动的积极倡导者和组织者。1962—1964年他出任ACM主席。著名的杂志CommunicationsoftheACM也是由他倡议创办的,并在1958—1962年担任第一任主编。 作为知名学者,他经常到世界各国讲学或作报告,足迹遍及苏联、丹麦、意大利、以色列、墨西哥、秘鲁、英国、荷兰、委内瑞拉……其中也曾两次到中国讲学。他也是“乒乓外交”后最早(1972年7月)到中国访问的美国计算机科学家代表团的成员之一。 佩利说过这样一句话:“任何名词都可以变为动词”(anynouncanbeverbed)。他的意思是说,任何远大的理想、志向、抱负和对新事物的追求,通过努力和不懈的实践都是可以实现的。这是佩利总结自己的一生所形成的至理名言。 佩利的主要著作有: 《对程序设计语言的思考》(AViewofProgrammingLanguages,Addison-Wesley,1970) 《计算机科学导论》(IntroductiontoComputerScience,Harper&Row,1972,1975)《软件可重用性》(SoftwareReusability,ACMPress,1989) 最后这部书分两卷,第一卷:概念与模型(ConceptsandModels),第二卷:应用与经验(ApplicationsandExperience),是佩利与比格斯托夫(T.J.Biggerstaff)合编的。这是他生前的最后一部著作,反映了他晚年对软件工程的关心和重视。 佩利1973年当选为美国艺术和科学院院士,1976年当选为美国工程院院士。除了获得图灵奖外,他还在1984年获得AFIPS的教育奖,曾被普渡大学、滑铁卢大学等多所大学授予名誉博士学位。1990年2月7日,佩利因心脏病在康涅狄格州的纽哈芬去世,享年68岁。 佩利是在1966年8月举行的ACM第21届全国大会上被授予图灵奖的。佩利发表了题为“算法系统的综合”(TheSynthesisofAlgorithmicSystems)的演说(刊于杂志JournaloftheACM,1967年1月,1—9页,也可见《前20年的ACM图灵奖演说集》(ACMTuringAwardLectures———TheFirst20Years:1966—1985,ACMPress,5—16页)。佩利发表演说的1966年,编程还要通过专门设计的“编码纸”(codingsheet)和穿孔卡片进行。但佩利的眼光已经瞄向未来。他在强调指出图灵计算模型的重要意义以后,讨论了程序设计语言和系统下一步应朝哪些方向发展,包括更丰富的数据类型和数据结构,以及与之相联系的更丰富的操作等。佩利所指出的方向有些已被随后的研究与开发所实现,如LISP和Smalltalk语言,有些则至今仍有待进一步的研究。
|