艾伦·佩利
生平
佩利1922年4月1日生于美国宾夕法尼亚州的匹兹堡。在卡内基理工学院(现卡内基—梅隆大学)学的专业是化学,1942年毕业取得学士学位。因当时还处于二次世界大战期间,而且在珍珠港事件后美国已宣布正式参战,因此佩利被应征入伍,在空军服役。战后他进入麻省理工学院(MIT)研究生院继续深造,改学数学,于1949年取得硕士学位,然后又攻读博士学位,于1950年取得该学位。1951年他在美国陆军军械部设在马里兰州的阿伯丁试验基地内的“弹道研究实验室”(冯·诺伊曼曾在该研究实验室当顾问)干了一年,然后回到母校MIT参加“旋风”(Whirlwind)计算机计划,为“旋风”编制程序。为了说明佩利参与的“旋风”计划的意义,我们先简要回顾一下计算机诞生初期的发展历史。
成就
ENIAC
大家知道,世界上第一台电子计算机叫“ENIAC”(这是Electronic Numerical Integrator and Computer的词头缩写,意为“电子数字积分器和计算机”),是宾夕法尼亚大学莫尔学院(Moore School)根据上述阿伯丁弹道研究实验室为各种火炮计算弹道、编制射击表的需要于1943年6月与联邦政府签订10万美元的合同而研制的。项目由约翰·莫奇利(John William Mauchly,1907—1980)负责逻辑设计,伊克特(John Presper Eckert,Jr,1919—1995)负责电路设计。ENIAC是一台十进制并行计算机,能同时处理10个十进制数,采用电子管电路,时钟频率100000 Hz,加法时间0.2 ms,乘法时间2.8 ms,是一个占地1500ft2(约139 m2),重30t,功耗150kw的庞然大物,于1946年2月完成,未能参加第二次世界大战,但被洛斯阿拉莫斯(Los Alamos)国家实验室用于计算原子弹爆炸的突变问题,后来又曾用于阿伯丁的空军试验场,一直运行到1955年10月才停止工作。世人一直公认莫奇利和伊克特是ENIAC的发明者,但后来在两家计算机公司的诉讼中,法院判定他们剽窃了约翰·阿塔那索夫(John Vincent Atana-soff,1903—1995)的构思和设计。这个涉及世界上第一台电子计算机的发明权案件曾经轰动美国。但有趣的是,虽然阿塔那索夫确实曾在1941年把自己关于构思计算机的设想告诉过莫奇利,后者也确实因此受到启发而写出了有关论证报告并设计出了ENIAC,但社会舆论似乎并不支持法院的判决,一提到ENIAC,几乎众口一词地仍然说是莫奇利和伊克特发明的,没有人说是阿塔那索夫发明的,这对美国法院的判决真是一种讽刺。
EDVAC
ENIAC虽然是世界上第一台电子计算机而被载人史册,但它不具备存储程序的能力,程序要通过外接电路板输入。要改变程序必须改接相应的电路板,对于每种类型的题目,都要设计相应的外接插板。这不是理想的结构,不符合冯·诺伊曼早就提出的存储程序的设想。那么世界上第一台存储程序式计算机是哪一台呢?有些资料认为是前面曾经提到过的曼彻斯特大学的MARK I,但一般说法是英国剑桥大学威尔克斯(M.V.Wilkes,1967年图灵奖获得者)设计和完成于1949年5月的EDSAC。实际上,最早开始设计与实施存储程序式计算机的还是莫尔学院的EDVAC(Electronic Discrete VariableAutomatic Computer的词头缩写,意为“电子分离变量自动计算机”)。这是1945年3月(当时ENIAC正在安装调试阶段),由冯·诺伊曼本人与莫奇利、伊克特等人经过两天会谈、讨论后制定的设计方案,采用电子管和半导体二极管,用水银延迟线作存储器,时钟频率1MHz,字长32bit。由于ENIAC的原因,EDVAC的研制从1947年才开始,加上莫奇利和伊克特两人后来因故离开了莫尔学院,使工程遇到困难,1952年(有的资料说1951年)才完成,这才使威尔克斯的ED—SAC“后来居上”(详见后面关于威尔克斯的介绍)。
旋风计算机
但不管EDSAC也好,EDVAC也好,都是串行计算机(serial com—Duter),即数据的传送和运算是按位逐一进行的,这样的计算机运算部件少,运算也简单,但速度慢,不能满足某些应用的需要。那么世界上第一台存储程序式的并行计算机是哪一台呢?这就是前述“旋风”计算机。“旋风”的主要设计者和研制者是MIT的弗里斯特(JayWright Forrest)。弗里斯特也是受军方委托,用风洞来研究飞机稳定性时根据数据处理的需要而设计“旋风”的。“旋风”受EDSAC的影响采用存储程序方式,但鉴于处理飞机稳定性需要2000条以上指令,必须改串行为并行,但又要照顾机器体积不宜过大,因此设计成16位字长的并行计算机。“旋风”的另一项创新是采用英国曼彻斯特大学威廉斯(FrederiC calland Williams,1911—1977)发明不久的阴极射线管作内存储器。“旋风”的研制工作从1946年开始,1950年试运行成功。20世纪50年代冷战加剧的形势下,美国军方对“旋风”寄予极大希望,空军每年投资100万美元(试比较一下,ENIAC的总经费才10万美元),MIT也专门成立了著名的“林肯实验室”,以弗里斯特原先的实验室为核心,研究“旋风”的军事应用。1951年,“旋风”与当时著名的SAGE(Semi-Automatic Ground Environment,即半自动地面防空系统,包括全美17个防区)首次实现连接,把位于卡德角的防空警戒雷达所截获的信息送到MIT,由“旋风”计算机进行处理、分析和存储。这是历史上计算机与通信相结合的先驱。弗里斯特还在20世纪40年代末和美籍华人科学家兼企业家王安(Wang An,1920—1990)几乎同时分别独立地发明了磁心存储器,并把它用在“旋风”中以代替阴极射线管存储器,从而进一步大大提高了“旋风”的性能。
Algol58
佩利在“旋风”上工作到1952年9月。之后他来到普渡大学,在那里他创建了全美大学中的第一个计算中心,开创了在大学中建立计算中心的先河。他出任普渡大学计算中心的第一任主任。在他的努力下,计算中心先安装了一台IBM的CPC计算机(Card ProgrammedCalculator),以后更新为Datatron 205。佩利为之设计了称为IT(Inter-hal Translator)的语言,并开发了IT的编译器。1956年佩利转到卡内基理工学院,“故伎重演”,又推动该校成立了计算中心并出任主任,配置了IBM 650计算机。佩利把他在普渡大学开发的IT及其编译器移植到IBM 650上,曾经在美国许多大学的IBM 650上被广泛采用;在IT的基础上,佩利和史密斯(J.Smith)、佐轮(H.Zoren)、伊万斯(A.Evans)等人一起为IBM 650设计与开发了新的代数语言和汇编语言。这些工作奠定了佩利作为计算机程序设计语言的先行者的地位。因此,当ACM于1957年成立程序设计语言委员会以便与欧洲的同行合作,设计通用的代数语言的时候,佩利被理所当然地看作是最佳人选而被任命为这个委员会的主席。1958年,在苏黎世举行的ACM小组和以当时联邦德国的应用数学和力学协会GAMM为主的欧洲小组的联合会议上,两个小组把他们关于算法表示法的建议综合为一,形成了Algol 58(开始时的名称叫做“国际代数语言”,即International Algebraic Language,简称IAL。后来改叫Algol 58)。在Algol 58的基础上,1960年1月在巴黎举行的有全世界一流软件专家参加的讨论会上,确定了程序设计语言Algol 60,发表了“算法语言Algol 60报告”。1962年又发表了“算法语言Algol 60的修改报告”。Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言由一种“技艺”转而成为一门“科学”,开拓了程序设计语言的研究领域,又为后来软件自动化的工作以及软件可靠性问题的发展奠定了基础。而后像1967年出现的首次引进“类型”的概念,把数据和被允许施行于这些数据之上的运算结合为一个统一体,因而成为现代抽象数据类型的开端以及第一个面向对象的语言SIMULA67,1971年出现的著名的PASCAL等语言,也都是在Algol 60的基础上加以扩充而形成的。Algol60的主要特点有:
1.局部性首次引进局部性概念,既扩充了语言的表达能力,又可节省内存空间,提高程序的紧凑性。
2.动态性语言含有动态成分,从而明显提高了语言的表达能力(当然也相应增加了实现中的开销)。
3.递归性递归性的引进开拓了软件的研究领域,促进了软件的发展。
4.严谨性它的语法和语义均有严格的描述,特别是语法,采用了著名的巴克斯范式BNF,结构清晰,理论严谨。
在Algol 58和Algol 60的形成和修改过程中,佩利都起了核心和关键的作用。佩利之所以荣获首届图灵奖,主要就是因为他在这方面的重大贡献。
与此同时,在佩利的积极组织下,卡内基理工学院率先在大学生中开设程序设计课程。在此之前,有关程序设计的知识是作为“数值分析”课程内容的一部分予以介绍的。程序设计课的开设是计算机科学教育的开端。这引起了计算机的最大用户——美国国防部的重视,由它的高级研究计划署ARPA出面,出资资助对计算机科学及其教育立项研究,其结果是20世纪60年代中期首先在卡内基理工学院、斯坦福大学、MIT等少数几个大学建立起了计算机科学系和计算机科学研究生院,使计算机科学脱离电气工程、数学等学科而成为一门独立的学科。鉴于佩利在其中所起的巨大作用,佩利被称为“使计算机科学成为独立学科的奠基人”——A founding father of Computer Science as a separate discipline。而在卡内基理工学院(现卡内基—梅隆大学),佩利和西蒙(H.A.Simon)、纽厄尔(A.Newell),后二人是1975年图灵奖获得者,三人被称为“计算机系的三驾马车”。
其他
1971年,佩利离开卡内基—梅隆大学,加盟新成立的耶鲁大学计算机系,曾数度出任系主任,为耶鲁大学计算机系的建设和发展作出了重大贡献。其间,1977—1978年,他曾在加州理工学院执教。因此,佩利可谓“桃李满天下”,尤其是美国的第一批计算机科学博士生,绝大部分都是佩利的弟子。
佩利也是计算机学术组织和学术交流活动的积极倡导者和组织者。1962—1964年他出任ACM主席。著名的杂志Communications of ACM也是由他倡议创办的,并在1958—1962年担任第一任主编。作为知名学者,他经常到世界各国讲学或作报告,足迹遍及前苏联、丹麦、意大利、以色列、墨西哥、秘鲁、英国、荷兰、委内瑞拉……其中也曾两次到中国讲学。他也是“乒乓外交”后,最早(1972年7月)到中国访问的美国计算机科学家代表团的成员之一。
佩利说过这样一句话:“任何名词都可以变为动词”(any noun canbe verbed)。他的意思是说,任何远大的理想、志向、抱负和对新事物的追求,通过努力和不懈的实践,都是可以实现的。这是佩利总结自己的一生所形成的至理名言。
1990年2月7日,佩利因心脏病在康涅狄格州的纽哈芬去世,享年68岁。
主要著作
《对程序设计语言的思考》(A View of Programming LanguagesAd-dison-Wesley,1970)《计算机科学导论》(Introduction to Computer Science,Harper&Row,1972,1975)《软件可重用性》(Software Reusability,ACM pr,1989)最后这部书分两卷,第一卷:概念与模型(Concepts and Models),第二卷:应用与经验(Applications and Experience),是佩利与比格斯托夫(T.J.Biggerstaff)合编的。这是他生前的最后一部著作,反映了他晚年对软件工程的关心和重视。佩利是在1966年8月举行的ACM第21届全国大会上被授予图灵奖的。佩利发表了题为“算法系统的综合”(The Synthesis of Algorithmic Systems)的演说(刊于杂志Journal of ACM,1967年1月,1~9页,也可见《前20年的图灵奖演说集》(ACM Turing Award Lectures----The First 20 Years:1966—1985,ACM pr,5~16页)。佩利发表演说的1966年,编程还要通过专门设计的“编码纸”(coding sheet)和穿孔卡片进行。但佩利的眼光已经描向未来。他在强调指出图灵计算模型的重要意义以后,讨论了程序设计语言和系统下一步应朝哪些方向发展,包括更丰富的数据类型和数据结构,以及与之相联系更丰富的操作等。佩利所指出的方向有些已被随后的研究与开发所实现,如LISP,Smalltalk,有些则至今有待进一步的研究。
荣誉
佩利1973年当选为美国艺术和科学院院士,1976年当选为美国工程院院士。除了获得图灵奖外,他还在1984年获得AFIPS的教育奖,曾被普渡大学、滑铁卢大学等多所大学授予名誉博士学位。1966年成为首届图灵奖的获得者。