艾伦·佩利“旋风”之梦

时间:2022-08-22 07:27:01

艾伦・佩利(Alan J.Perlis),1966年首届图灵奖获得者。1922年4月1日出生于美国宾夕法尼亚洲的匹兹堡。卡内基理工学院(现卡内基-梅隆大学)化学专业学生,毕业于1942年同时取得学士学位。因当时还处于二次世界大战期间,而且珍珠港事件后美国宣布正式参战,因此佩利被应征入伍,在空军服役。

战后他进入加州理工学院研究生院继续深造,改学数学,于1947年取得硕士学位,后又到麻省理工学院(MIT)攻读博士,于1950年取得学位。1951年起佩利在美国陆军军械部设在马里兰州的阿伯丁试验基地内的“弹道研究实验室”(冯・诺伊曼曾在该研究实验室当顾问)工作,一年后,回到母校MIT参加“旋风”(Whirlwind)计算机计划,为“旋风”编制程序。

“旋风”面世

众所周知,世界上第一台计算机叫“ENIAC”(Electronic Numerical Integrator and Computer),即“电子数字积分器和计算机”。它是宾夕法尼亚大学莫尔学院(Moore School)根据上述阿伯丁弹道研究实验室为各种火炮计算弹道、编制射击表的需要于1943年6月与联邦政府签订10万美元的合同而研制的。

ENIAC是一台十进制并行计算机,能同时处理10个十进制数,采用电子管电路,时钟频率100000Hz,加法时间0.2 ms,乘法时间2.8ms,是一个占地139m2,重30吨功耗150千瓦的庞然大物。

ENIAC虽然作为世界上第一台电子计算机而被载入史册,但它并不具备存储程序的能力,程序要通过外接电路才能输入。那么世界上第一台存储程序式计算机是哪一台呢?有资料认为是曼彻斯特大学的MARKI,但现在一般说法是英国剑桥大学威尔克斯(M.V.Wilkes,1967年图灵奖获得者)设计和完成于1949年5月的EDSAC。

不管EDSAC也好,EDVAC也好,都是串行计算机(serial computer),即数据的传送和运算是按位逐一进行的,这样的计算机运算部件少,运算简单,但速度慢,不能满足某些应用的需要。前已述及的“旋风”计算机就成了世界上第一台存储程序式的并行计算机。“旋风”的主要设计者和研制者是MIT的弗里斯特(Jay Wright Forrest)。弗里斯特是受军方委托,用风洞来研究飞机稳定性时根据数据处理的需要而设计“旋风”的。

整个“旋风”的研制工作从1946年开始,1950年试运行成功。“旋风”是受EDVAC的影响采用了存储程序方式,但鉴于处理飞机稳定性时需要2000条以上指令,串行必须改为并行才能满足其需要,同时又兼顾到机器体积不宜过大等因素,因此它被设计成了16位字长的并行计算机。而“旋风”的另一项创新是采用英国曼彻斯特大学威廉斯(Frederic Calland Williams,1911-1977)发明不久的阴极射线管作内存储器。

Algol 60

为“旋风”工作到1952年9月,佩利来到普渡大学,创建了全美大学中第一个计算中心,开创了在大学中建立计算中心的先河,并出任第一任主任。在他的努力下,计算中心先安装了一台IBM的CPC计算机(Card Programmed Calculator),之后更新为Datatron 205。佩利为其设计了称为IT(Internal Translator)的语言,并开发了IT的编译器。

1956年佩利转到卡内基理工学院,推动该校成立了计算中心并再次出任主任,同时配置了IBM 650计算机。他还把他在普渡大学开发的IT语言及其编译器移植到IBM 650上,他开发的IT语言及其编译器一度在美国许多大学的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报告”。两年后又发表了“算法语言Algol60的修改报告”。

Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言由一种“技艺”转而成为一门“科学”,开拓了程序设计语言新的研究领域,为后来软件自动化的工作以及软件可靠性问题的发展奠定了基础。1967年出现的首次引进“类型”的概念―把数据和被允许施行于这些数据之上的运算结合为一个统一体,成为现代抽象数据类型的开端以及第一个面向对象的语言SIMULA 67,以及1971年出现的著名的PASCAL等语言,都是在Algol 60的基础上加以扩充而形成的。

在Algol 58和Algol 60的形成和修改过程中,佩利起了核心和关键的作用。佩利之所以能够荣获首届图灵奖,主要就是因为他在这方面的重大贡献。

名词到动词、理想到实现

佩利曾说过这样一句话:“任何名词都可以变为动词(any noun can be verbed)。”意思是,任何远大的理想、志向、抱负和对新事物的追求,都要通过努力和不懈的实践才能实现。这是佩利总结自己一生所形成的至理名言。

在佩利的积极组织下,卡内基理工学院率先在大学生中开设了程序设计课程。在此之前,有关程序设计的知识是作为“数值分析”课程内容的一部分予以介绍的。程序设计课的开设是计算机科学教育的开端。其结果是20世纪60年代中期,首先在卡内基理工学院、斯坦福大学、麻省理工学院等少数几个大学建立了计算机科学系和计算机科学研究生院,使计算机科学脱离电气工程、数学等学科而成为一门独立的学科。鉴于所起的巨大作用,佩利被称为“使计算机科学成为独立学科的奠基人”。在卡内基理工学院(现卡内基-梅隆大学),佩利、西蒙(H. A. Simon)和纽厄尔(A. Newell)三人被称为“计算机系的三驾马车”,而另两人是1975年图灵奖获得者。

1971年,佩利离开了卡内基-梅隆大学,加盟新成立的耶鲁大学计算机系,几度出任系主任,为耶鲁大学计算机系的建设和发展作出了重大贡献。1977~1978年,又转到加州理工学院执教。佩利可谓是“桃李满天下”。在美国第一批计算机科学博士生中,绝大部分都是佩利的弟子。

佩利也是计算机学术组织和学术交流活动的积极倡导者和组织者。1962~1964年他出任由他倡议创办的ACM,并在1958~1962年担任第一任主编。作为知名学者,他经常到世界各国讲学或作报告,其中也曾两次到中国讲学。同时他也是“乒乓外交”后最早(1972年7月)到中国访问的美国计算机科学家代表团的成员之一。

佩利于1973年当选为美国艺术和科学院院士,1976年当选为美国工程院院士。除了荣获图灵奖外,他还于1984年获得AFIPS教育奖,被普渡大学、滑铁卢大学等多所大学授予名誉博士学位。不幸的是,佩利因心脏病于1990年2月7日在康涅狄格洲纽哈芬去世,享年68岁。

佩利是在1966年8月举行的ACM第21届全国大会上被授予图灵奖的。他发表了题为“算法系统的综合”(The Synthesis of Algorithmic Systems)的演说,而佩利发表演说的1966年,编程还要通过专门设计的“编码纸”(coding sheet)和穿孔卡片进行,但佩利的眼光已经描向未来。他在强调指出图灵计算模型的重要意义后,讨论了程序设计语言和系统下一步的发展方向,包括更加丰富的数据类型和数据结构以及与之相联系的更丰富的操作等。

EDSAC

EDVAC(Electronic Discrete Variable Automatic Computer)是按存储程序式思想设计的,并能对指令进行运算和修改,因而可自动修改其自身的程序。EDSAC(Electronic Delay Storage Auto-matic Calculator)是威尔克斯以EDVAC为蓝本设计的。于1949年5月6日首次试运行成功。EDSAC采用水银延迟线作存储器,可存储34恤字长的字512个,加法时间1.5ms,乘法时间4ms。威尔克斯首次成功地为EDSAC设计了一个程序库,保存在纸带上,需要时送入计算机。

ALGOL

ALGOL是计算机发展史上首批产生的高级语言,当时还是晶体管计算机流行的时代,由于ALGOL语句和普通语言表达式接近,更适于数值计算,所以ALGOL多用于科学计算机。它是算法语言的简称,这种语言不是计算机制造公司为某种特定机器设计的,而是纯粹面向描述计算过程的,也就是所谓面向算法描述的。

ALGOL是第一个清晰定义的语言,其语法是用严格公式化的方法说明的。ALGOL语言并没有被广泛的使用,但它却是许多现代程序语言的概念基础。

上一篇:流程外包,控制权会否旁落? 下一篇:窄告的Web2.0前奏