艾伦·佩利
----ALCOL语言和计算机科学的“催生者”
艾伦·佩利(Alan J.Perlis)由于在ALGOL语言的定义和扩充上所作出的重大贡献,以及在创始计算机科学教育,使计算机科学成为一门独立的学科上所发挥的巨大作用而成为首届图灵奖当之无愧的获得者。
佩利1922年4月1日生于美国宾夕法尼亚州的匹兹堡。在卡内基理工学院(现卡内基—梅隆大学)学的专业是化学,1942年毕业取得学士学位。因当时还处于二次世界大战期间,而且在珍珠港事件后美国已宣布正式参战,因此佩利被应征入伍,在空军服役。战后他进入加州理工学院研究生院继续深造,改学数学,于1947年取得硕士学位,然后又到麻省理工学院(MIT)攻读博士学位,于1950年取得该学位。1951年他在美国陆军军械部设在马里兰州的阿伯丁试验基地内的“弹道研究实验室”(冯·诺伊曼曾在该研究实验室当顾问)干了一年,然后回到母校MIT参加“旋风”(Whirlwind)计算机计划,为“旋风”编制程序。为了说明佩利参与的“旋风”计划的意义,我们先简要回顾一下计算机诞生初期的发展历史。
大家知道,世界上第一台电子计算机叫“ENIAC”(这是ElectronicNumerical 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,几乎众口一词地仍然说是莫奇利和伊克特发明的,没有人说是阿塔那索夫发明的,这对美国法院的判决真是一种讽刺。
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)几乎同时分别独立地发明了磁心存储器,并把它用在“旋风”中以代替阴极射线管存储器,从而进一步大大提高了“旋风”的性能。
佩利在“旋风”上工作到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)。他的意思是说,任何远大的理想、志向、抱负和对新事物的追求,通过努力和不懈的实践,都是可以实现的。这是佩利总结自己的一生所形成的至理名言。
佩利的主要著作有:
《对程序设计语言的思考》(A View of Programming Languages Ad-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)合编的。这是他生前的最后一部著作,反映了他晚年对软件工程的关心和重视。
佩利1973年当选为美国艺术和科学院院士,1976年当选为美国工程院院士。除了获得图灵奖外,他还在1984年获得AFIPS的教育奖,曾被普渡大学、滑铁卢大学等多所大学授予名誉博士学位。1990年2月7日,佩利因心脏病在康涅狄格州的纽哈芬去世,享年68岁。
佩利是在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,有些则至今有待进一步的研究。