1 早年与教育背景

1.1 出生与家庭环境

艾伦·佩利于1922年4月1日出生于美国宾夕法尼亚州匹兹堡。他的父亲是一位钟表匠,母亲则是一位家庭主妇。佩利自幼便表现出对机械与工艺的浓厚兴趣,常常在父亲的作坊里摆弄齿轮和发条。这种对精密系统的早期接触,为他日后在计算机科学领域处理复杂逻辑问题奠定了基础。佩利家中藏书不多,但他对数学和自然科学有着自发的好奇心,中学时期便开始阅读解方程和几何证明的书籍。

1.2 卡内基理工学院求学

1.2.1 数学与化学专业转向

1940年,佩利进入卡内基理工学院(现卡内基梅隆大学)学习。他最初选择了化学工程专业,但很快意识到自己更喜欢数学的抽象与严谨。在体验到化学实验的繁琐与不确定性后,他转而主修数学,同时辅修物理。这一转向对他后来的计算机科学事业产生了双重意义:既培养了他用数学模型描述问题的习惯,又保留了对工程实践(如编译器实现)的务实态度。1943年,佩利获得数学学士学位。

1.3 麻省理工学院深造

1.3.1 博士研究:数值分析与计算机应用

二战期间,佩利在美国陆军服役,从事弹道计算与统计工作。战后,他进入麻省理工学院(MIT)攻读数学博士学位。在MIT,他加入了由塞缪尔·亚历山大(Samuel Alexander)和菲利普·莫尔斯(Philip Morse)领导的计算实验室。他的博士研究方向为数值分析,具体关注于用早期电子计算机(如Whirlwind计算机)来求解偏微分方程和优化问题。1950年,佩利以论文《微分方程的数值解》获得博士学位。这段经历将他从纯数学带入计算领域,并直接塑造了他后来对编程语言实用性的深刻理解。

2 学术生涯与职业历程

2.1 卡内基理工学院(卡内基梅隆大学前身)

2.1.1 建立首个计算机科学系

1952年,佩利回到母校卡内基理工学院,担任数学系教授。1956年,他牵头成立了“计算中心”,并随后推动数学系内设立“计算机科学”方向的课程。在他的不懈游说下,1965年,卡内基理工学院正式建立了全美乃至全球最早的计算机科学系之一(常被称为首个独立的计算机科学系)。佩利担任该系首任系主任,致力于将计算机科学从数学的附属地位中解放出来,确立为一门独立的工程学科。

2.1.2 推动计算机教育课程改革

在卡内基理工学院期间,佩利主导了一系列计算机教育课程的改革。他强调编程实践与理论学习并重,反对仅将计算机科学视为数学的一个分支。他引入了以ALGOL语言为核心的课程体系,要求学生从底层逻辑出发理解编译过程,而非仅学习高级功能库的调用。他还积极倡导跨学科合作,鼓励计算机系学生与商学、工程、心理学等专业的学生共同完成项目。这些改革措施为后来卡内基梅隆大学计算机科学学院今天的领先地位奠定了重要基础。

2.2 耶鲁大学计算机科学系

2.2.1 担任系主任与教学改革

1971年,佩利离开卡内基梅隆,加入耶鲁大学,担任新成立的计算机科学系系主任。在耶鲁,他继续推行其独特的教育理念,强调程序正确性证明与计算理论的教学。他认为编程不仅是写代码,更是对逻辑与算法的精确表达。他主持建立了耶鲁首个计算机科学博士项目,并积极引入外部资金建设实验室。在他的任期内(1971-1979),耶鲁的计算机科学系从“数学-计算混合体”成长为拥有独立身份和影响力的院系。

2.2.2 退休后的荣誉教授身份

1979年,佩利从系主任职位上卸任,但并未停止学术活动。他被授予耶鲁大学荣誉教授称号,继续参与教学、写作和学术会议。退休后,他花费大量时间整理自己多年来的编程格言,以及对计算机教育的反思。他偶尔返回卡内基梅隆大学讲学,并与年轻学者保持着活跃的通信。

3 主要贡献与成就

3.1 ALGOL 58与ALGOL 60语言设计

3.1.1 ALGOL语言核心语法创新

艾伦·佩利是ALGOL 58和ALGOL 60设计的关键参与者。ALGOL(Algorithmic Language)被设计为一种面向数学算法的通用编程语言。佩利为ALGOL引入了若干影响深远的语法创新:

  • 嵌套块结构:通过 beginend 界定作用域,实现了变量可见性的精确控制。
  • 递归过程:允许子程序调用自身,这是当时其他主流语言(如FORTRAN)所不具备的。
  • 形式化语法描述:佩利参与推动了使用巴科斯-诺尔范式(BNF)来精确描述ALGOL的语法,这成为后来所有编程语言设计的基础。

ALGOL 60因此被誉为“编程语言的罗曼史”——语法优美且极具数学之美。

3.1.2 与约翰·巴科斯等人的合作

ALGOL的设计是一个国际性合作项目。佩利与约翰·巴科斯(John Backus,FORTRAN的设计者之一)以及彼得·诺尔(Peter Naur)等人密切合作。佩利以其务实主义著称,在小组争议中常扮演调和者角色:当巴科斯主张语言要严格遵循数学逻辑时,佩利会提醒语言需要照顾编译器实现的可行性。这种合作模式使得ALGOL在理论严谨性与工程实用性之间取得了良好平衡。

3.2 编译技术先驱

3.2.1 纽厄尔-佩利算法与表达式翻译

在编译技术领域,佩利与艾伦·纽厄尔Allen Newell)合作开发了著名的“纽厄尔-佩利算法”(Newell-Perlis Algorithm),用于高效地将中缀表达式(如 a + b * c)转换为计算机易于处理的后缀形式(即逆波兰表示法)。该算法利用栈数据结构,只需扫描一次输入表达式即可生成对应的机器指令,极大地提高了早期编译器的性能。这一算法至今仍是编译器设计中“表达式翻译”的标准教学案例。

3.2.2 早期编译器实现经验

佩利亲身参与了多个早期编译器的构建。在实现ALGOL 60的编译器时,他面临内存极小(当时的计算机内存常以几千字节为单位)、缺少系统库等技术困境。他需要手动管理符号表、优化寄存器分配。这些经历让他深刻理解“理论上的优雅”与“实际中的可行”之间的鸿沟,也促使他后来在格言中强调“在任何事物被证明之前,先试试看它能不能运行”。

3.3 图灵奖与首届获奖者

3.3.1 1966年获奖理由与致辞

1966年,美国计算机协会(ACM)将首届图灵奖授予艾伦·佩利。获奖理由是:“感谢他对高级编程语言、编译器设计以及计算机教育的开创性贡献,尤其是对ALGOL语言发展的领导作用。”在获奖致辞中,佩利没有过多谈论技术细节,而是发表了著名演讲《计算机科学中的算法思维》。他强调,计算机科学的核心不是“关于计算机的科学”,而是“关于计算本质的科学”——即算法及其表达。这一观点深刻影响了后来图灵奖获奖者(如唐纳德·克努特)的思考方向。

3.3.2 对后续编程语言研究的影响

佩利获得的图灵奖,同时也是对ALGOL语言地位的正式认可。ALGOL的嵌套作用域、递归支持、形式化语法等思想,直接影响了后续语言如Pascal、C、JavaPython的设计。佩利的编译工作与格言,也激励了一代程序员去反思编程的本质——编程不是对机器的命令,而是对问题的结构化解决。

4 编程格言与教育思想

4.1 《编程格言》(Epigrams on Programming)

4.1.1 格言选集与核心观点

1982年,佩利在《ACM SIGPLAN Notices》杂志上发表了一篇经典文章《编程格言》(Epigrams on Programming)。全文共包含120条精炼的讽刺性格言,以其幽默、犀利和深刻著称。核心观点包括:

  • “任何一个程序,只要它在运行,就是过时的。”(讽刺软件维护的永恒滞后性)
  • “如果一个人不能把一个问题讲给计算机听,那说明他根本不懂这个问题。”(强调精确表达的难度)
  • “进度控制最容易骗人的时间就是项目的第一个季度。”(调侃软件工程中的乐观主义)

这些格言并非严肃的技术准则,而是以“段子”的形式点出了编程实践中的普遍谬误和悖论。

4.1.2 “能在一个编译器里运行的,才是真程序”

佩利最著名的格言之一是:“能在一个编译器里运行的,才是真程序;能在一个会议上被展示的,才是好程序。”前半句直指当时学术圈盛行的“纸上编程”风气——许多人发表论文描述美妙算法,但从未在真实机器上测试过。佩利讽刺道,一个无法运行的程序本质上只是一个假设,配不上“程序”这个称号。后半句则调侃了学术会议重头衔轻实效的传统,认为程序若只停留在论文里而不被实际使用,终归是“过于干净”的假玩意儿。

4.2 计算机教育理念

4.2.1 强调算法思维与抽象能力

佩利在其教学生涯中始终强调,“计算机科学不是关于计算机,而是关于如何用逻辑解决人类的问题。”他将“算法思维”视为计算机教育的核心,反对简单地将课程简化为“学会某种语言”。他认为,学生必须掌握从实际问题中抽象出算法模型的能力,然后才能用计算机表达它。在他的课上,学生经常需要写伪代码和数学证明,而不仅仅是调试代码。

4.2.2 批判“黑盒”编程教学

佩利是“黑盒编程教学”的尖锐批评者。黑盒教学指的是只教会学生调用现成的库(如排序函数、窗口组件),但不讲解内部实现原理。佩利曾揶揄道:“如果一个学生通过了编程课却不知道栈和队列有什么区别,那这门课教出来的不是程序员,而是‘操作工’。”他主张学生必须亲手实现二叉搜索树、编译器的简单模块或内存分配器,才能真正理解计算机的底层逻辑。这一理念对后来卡内基梅隆大学“从底层起步”的计算机课程体系产生了深远影响。

5 个人轶事与遗产

5.1 幽默风趣的学者形象

佩利以其机智、幽默和不拘一格的性格在学术界享有极高声望。他经常在演讲中穿插冷笑话或自嘲。例如,当有学生问他“为什么ALGOL 60没有成为像FORTRAN那样流行的商业语言”时,他回答说:“因为它太优雅了,以至于没人愿意花钱毁掉它的名声。”他还常穿着夸张的格子衬衫和旧牛仔裤上课,这与当时注重严谨学术形象的教授形成鲜明对比。他的办公室门上常年贴着一句告示:“如果你看到我在这里工作,请打我一下。”

5.2 对卡内基梅隆大学的持续影响

5.2.1 佩利计算机科学中心命名

为纪念佩利的贡献,卡内基梅隆大学的计算机科学学院将其主楼命名为“艾伦·佩利计算机科学中心”(Alan Perlis Computer Science Center)。该中心启用于20世纪90年代,是学校计算机教学与研究的核心设施。建筑内陈列着佩利的照片、他的手稿复印件以及一把旧式个人电脑键盘——据说是他当年用来编写ALGOL编译器的工具。

5.2.2 奖项与纪念活动

卡内基梅隆大学设立了“佩利奖”(Perlis Award),每年颁发给在计算机教育领域有突出贡献的教职工。此外,ACM(美国计算机协会)在每年图灵奖颁奖典礼上都会提及佩利的姓氏,以纪念首届获奖者的奠基作用。在一些计算机科学教育会议上,与会者也会自发组织“佩利格言研读会”,共同讨论那些几十年前的“段子”在今日的适用性。

5.3 主要著作与出版物

5.3.1 《编程格言》全文收录

《编程格言》至今仍是计算机文化中的经典文本。该文全文被收录在多部计算机科学文选和《ACM经典文章集》中。由于格言本身具有极强的讽刺性和跨时代性,它们经常被程序员在论坛、博客和书籍中引用。2020年,一本名为《Perlis Emojis》的粉丝作品(非正式出版物)将所有120条格言翻译为表情符号格式,在网络上小范围流行。

5.3.2 合著《计算结构与编程》

1986年,佩利与卡内基梅隆大学教授艾伦·纽厄尔和约翰·哈特(John Hart)等人合著了教材《计算结构与编程》(Computation Structure and Programming)。该书从计算机硬件的物理结构出发,逐步讲解到高级编程语言和操作系统,试图为学生提供“从门电路到抽象隐喻”的完整认知。该书虽然未能像《计算机程序设计艺术》那样成为经典,但在卡内基梅隆大学内部被使用多年,并在教学理念上影响了20世纪80年代的一批计算机系学生。