编者按:2020年的图灵奖颁给了程序员的启蒙老师,“龙书”的作者 Alfred Vaino Aho、Jeffrey David Ullman。两位合作几十年,其研究成果培养了一代又一代的计算机科学家。
Aho 和 Ullman 的影响力还表现在:其帮助计算机领域人士了解了算法的理论基础,并规划了编译器和编程语言设计方面的研究和实践课程。对此,微软研究员 Krysta Svore评价,“如果没有他们的工作,我们将无法为手机编写应用程序。”
国际计算机协会(ACM)官宣将2020年图灵奖授予哥伦比亚大学计算机科学名誉教授 Alfred Vaino Aho 和斯坦福大学计算机科学名誉教授 Jeffrey David Ullman,以表彰他们在编程语言实现(programming language implementation)领域基础算法和理论方面的成就。除了对编程语言实现本身的贡献以外,这两位教授还著有几本此领域的经典教材,深刻影响了数代计算机科学家,以及广大的程序猿。可以说,是他们的编译技术才使得计算机能看懂人类的编程语言。
图灵奖以英国数学家艾伦·M·图灵(Alan M. Turing)的名字命名,他阐明了计算的数学基础和局限性,并且是第二次世界大战期间对 Enigma 密码进行联合密码分析的关键贡献者。自1966年成立以来,图灵奖一直授予那些创造了推动信息技术行业发展的系统和基础理论基础的计算机科学家和工程师。
Alfred Vaino Aho 是哥伦比亚大学的 Lawrence Gussman 荣誉教授。他于1995年加入哥伦比亚大学计算机科学系。在加入哥伦比亚大学之前,Aho 曾在贝尔实验室担任计算科学研究副总裁,在该实验室工作了30多年。Aho 毕业于多伦多大学,之后获得了普林斯顿大学电气工程/计算机科学的硕士学位和博士学位。他是美国国家工程学院、美国艺术与科学学院和加拿大皇家学会的会员。他同时也是 ACM、IEEE、贝尔实验室和美国科学发展协会的会员。Aho 荣获过数不胜数的荣誉,包括 IEEE 约翰·冯·诺依曼奖章和 NEC C&C 基金会 C&C 奖等等大奖。Aho 在其博士学位论文中创建了索引语法和嵌套堆栈自动机,作为扩展上下文无关语言功能的工具,但保留了它们的许多可判定性和闭包属性。索引语法已被用于建模并行重写系统,特别是在生物学应用中。在贝尔实验室工作期间,他设计了有效的正则表达式和字符串模式匹配算法,并在 Unix 工具 egrep 和 fgrep 的第一个版本中实现了该算法。Aho 还因与 Peter J. Weinberger 和 Brian Kernighan 共同编写 AWK 编程语言而闻名(“ A”代表“ Aho”)。
Jeffrey David Ullman 是斯坦福大学 W. Ascherman 名誉教授,同时也是 Gradiance Corporation 的 CEO,该公司是一个包含各种计算机科学主题的在线学习平台。Ullman 在普林斯顿大学获得计算机科学博士学位,他曾于1966年至1969年担任贝尔实验室的技术人员,并于1969年至1979年在普林斯顿大学任教,之后他于1979年加入斯坦福大学。Ullman 的研究兴趣还包括数据库理论、数据集成、数据挖掘和使用信息基础结构的教育。他是数据库理论领域的创始人之一,并且是整整一代人的博士生导师,他的这些学生后来也独立地成为了学术界有名的数据库理论家。Ullman 指导过的博士生当中还有产业界赫赫有名的谷歌联合创始人——谢尔盖·布林。Ullman 是 ACM 会员、美国国家工程学院、美国国家科学院和美国艺术与科学学院的会员。Ullman 获得过的荣誉包括 EEE 冯诺依曼奖章、NEC C&C 基金会 C&C 奖,Donald E. Knuth 奖和 ACM Karl V. Karlstrom 杰出教育家奖。
1963年,当 Alfred Aho 和 Jeffrey Ullman 在普林斯顿大学研究生院开学的第一天在登记线等候时相遇时,计算机科学仍然是一个陌生的新世界。使用计算机需要一组深奥的技能,通常只供受过训练的工程师和数学家使用。但是今天,部分归功于 Aho 和 Ullman 的工作,几乎任何人都可以使用计算机并对计算机进行编程以执行新任务。在这个世界上运行着的每个程序,从手机、汽车上的程序,到在大型 Web 公司内部的大型服务器中运行的程序,都是由人类使用高级编程语言编写、然后编译为较低级的代码交给机器汇编执行。在计算机中,编译器是一种计算程序,它将以编程语言或计算机语言(源语言)编写的源代码转换为另一种计算机语言(目标语言,通常具有称为目标代码或机器代码的二进制形式)。转换源代码的最常见原因是创建可执行程序。用高级编程语言编写的任何程序都必须先编译成目标代码,然后才能执行,因此所有使用这种语言的程序员都必须使用编译器或解释器。因此,编译器对现代程序员来说至关重要、不可缺少。对编译器的改进可能会带来可执行程序中的大量功能改进。早期计算机的软件主要是用汇编语言编写的。直到在不同类型的 CPU 上重用软件的收益变得足够大,人们才开始编写编译器,并发明了高级编程语言。对于程序员来说,使用高级编程语言通常通常会更有效率,并且用高级语言编写的程序可以在不同类型的计算机上重用 。即便如此,编译器还是需要一段时间才能建立起来,因为它们生成的代码性能不如手写汇编语言,它们本身就使开发项目望而生畏。早期计算机的内存容量非常有限,在实现编译器时也产生了许多技术问题。在1950年代末,人们首次提出了与机器无关的编程语言。随后,人们开发了几种实验编译器。第一个实现的编译器由 Grace Hopper 于1952年为 A-0 编程语言编写,然而该系统起着加载器或链接器的作用,而不是现代的编译器概念。现代意义上的第一个自动编码和编译器由 Alick Glennie 于1952年在曼彻斯特大学为 Mark 1 计算机开发。
Aho 和 Ullman 从1967年在贝尔实验室开始合作,并持续了几十年,为编程语言理论和实现以及算法设计和分析奠定了基础。他们通过技术贡献和编写有影响力的教科书,为编程语言编译器领域做出了广泛而根本的贡献。他们在算法设计和分析技术方面的早期合作为这一时期出现的计算机科学的理论核心提供了重要的方法。ACM 主席 Gabriele Kotsis 表示:“计算机编程的实践以及日益先进的软件系统的发展为我们在过去五十年来在社会中经历的几乎所有技术转型奠定了基础。”“尽管无数的研究人员和从业人员为这些技术做出了贡献,但 Aho 和 Ullman 的工作尤其具有影响力。他们帮助我们了解了算法的理论基础,并规划了编译器和编程语言设计方面的研究和实践课程。自1970年代初以来,Aho 和 Ullman 一直是思想领袖,直到今天,他们的工作已经指导了几代程序员和研究人员。”微软研究员 Krysta Svore 说,如果没有他们的工作,“我们将无法为手机编写应用程序。”“他们的影响无处不在,”Rust 编程语言的创建者 Graydon Hoare 说,“他们的两本书都放在我的书架上。”Svore 博士目前正在研究量子计算机,量子计算机所依赖的物理行为与传统计算机完全不同。但是,当他们为这些机器创建编程语言时,仍然会借鉴两位新晋图灵奖获得者的工作。
Aho 和 Ullman 共同撰写了九本有影响力的书(包括第一版和后续版本)。他们最著名的两本书包括:《 The Design and Analysis of Computer Algorithms》
这本书由 Aho、Ullman 和 John Hopcroft(1986年图灵奖得主)合著,被认为是该领域的经典著作,并且是十多年来计算机科学研究中被引用最多的书籍之一。在计算机科学仍是一个新兴领域时,它已成为全世界算法课程的标准教科书。除了将自己的研究成果纳入算法之外,《计算机算法的设计和分析》还引入了随机存取机(RAM)作为使用递归关系分析计算机算法的时空复杂度的基本模型。RAM 模型还将不同的单独算法编码为通用设计方法。本书介绍的 RAM 模型和通用算法设计技术现已成为标准计算机科学课程的组成部分。《Principles of Compiler Design 》由 Aho 和 Ullman 共同撰写的这本有关编译器技术的权威书籍将形式语言理论和基于语法的翻译技术集成到了编译器设计过程中,由于其封面设计,通常被称为“龙书”。(虽然被一些程序员经常放在书架或者不知哪个角落里吃灰)这本书清晰地列出了将高级编程语言转换为机器代码,模块化整个编译器构造。书中囊括了作者对词法分析高效技术、语法分析技术和代码生成做出的算法贡献。
这本书的最新版本《编译原理》(与 Ravi Sethi 和 Monica Lam 合著)于2007年出版,至今仍是有关编译器设计的标准教科书。
ACM 官网对历届获奖者进行了关键词分类。比如,今年的两位获奖者就被归入“编译器”(Compiler)一类。
可以看到,在编译器一类中还有多位其他获奖者,包括1966年获奖的 Alan J Perlis、1987年获奖的 John Cocke、2006年获奖的 Frances Elizabeth Allen。也就是说,编译器研究已经四次摘取图灵奖桂冠。
Alan Jay Perlis 是美国计算机程序设计领域的科学家,实际上,他是首届图灵奖获得者。获奖理由是由于其在高级程序设计技术和编译器构造方面的影响,即主要指在 Algol 58 和 Algol 60 的形成和修改过程中的核心和关键作用。
1960年1月,Alan Jay Perlis 在巴黎举行的有全世界一流软件专家参加的讨论会上,发表了'算法语言 Algol 60 报告',确定了程序设计语言 Algol 60。Algol 60 语言的第一个编译器由艾兹赫尔·戴克斯特拉来实现。1962年,艾伦·佩利又对 Algol 60 进行了修正。
John Cocke,在电脑架构及编译器最佳化技术方面有重大贡献,因此获得图灵奖。在他主导的 IBM 801 计划中,首次采用 RISC 架构,因此被称为 RISC 架构之父。
1975年,他负责领导 IBM 801 微电脑的开发。在开发中,他提出精简指令集的设计方法。他认为,将指令集的数目加以精简,可以简化处理器架构,同时可以减低硬件成本。经过编译器的最佳化,可以增进运算效率。
Fran Allen 作为一名编译器优化领域的先驱,她的成就主要包括编译器的基本原理、代码优化和并行编译等。她是2006年图灵奖得主,是第一位获得此奖的女性科学家。
她在1980年代早期创立了并行翻译(Parallel TRANslation,PTRAN)研究组,致力于研究并行电脑的编译问题。该小组的工作在编译器的并行化方面处于世界领先的位置。她在这些项目中的工作促成了许多目前广泛应用于商业编译器中的程序优化算法和技术。
- https://www.cnet.com/news/turing-award-goes-to-researchers-who-made-programming-easier-and-more-powerful/?PostType=link&ServiceType=twitter&TheTime=2021-03-31T09%3A05%3A04&UniqueID=2ECF7418-9200-11EB-8694-64E94744363C&ftag=COS-05-10aaa0b
- https://www.nytimes.com/2021/03/31/technology/turing-award-aho-ullman.html?partner=IFTTT
- https://en.wikipedia.org/wiki/Jeffrey_Ullman
- http://infolab.stanford.edu/~ullman/
- https://en.wikipedia.org/wiki/Alfred_Aho
- http://www.cs.columbia.edu/~aho/bio.html
- https://en.wikipedia.org/wiki/History_of_compiler_construction
- https://resources.saylor.org/wwwresources/archived/site/wp-content/uploads/2012/01/CS304-1.2.2-COMPILERSHISTORYWIKI.pdf
- https://en.wikipedia.org/wiki/History_of_programming_languages
- https://en.wikipedia.org/wiki/Assembly_language
- https://instant.lvv2.com/html/d14df78a39317cace54d42bcc0586035.html
你也许还想看: