转载自:学术头条 作者:刘芳

图 | 哥伦比亚大学计算机科学名誉教授 Alfred Vaino Aho、斯坦福大学计算机科学名誉教授 Jeffrey David Ullman

刚刚,国际计算机协会(ACM)官网宣布将此奖项授予哥伦比亚大学计算机科学名誉教授 Alfred Vaino Aho 和斯坦福大学计算机科学名誉教授 Jeffrey David Ullman,以表彰他们在编程语言实现(programming language implementation)领域基础算法和理论方面的成就。

除了对编程语言实现本身的贡献以外,这两位教授还将此领域的诸多研究成果编纂成教材,深刻影响了数代计算机科学家,以及程序员。

图灵奖通常被称为 “计算机界的诺贝尔奖”,奖金为 100 万美元,由谷歌公司提供财政支持。该奖项以英国数学家艾伦・M・图灵(Alan M. Turing)的名字命名,他曾研究了计算的数学基础和极限问题。

两位编程语言大佬

计算机软件是现代社会人类与科技互动的驱动器。不论是在手机、汽车还是网络公司内部的大型服务器上,世界上的每一个程序都是人类使用高级语言编写,之后再翻译成低级语言以供计算机运行的。这种将高级语言程序翻译成计算机能识别的低级语言的技术在很大程度上要归功于 Aho 和 Ullman。

Aho 是哥伦比亚大学荣誉教授。他于 1995 年加入哥伦比亚大学计算机科学系。在加入哥伦比亚大学之前,Aho 是贝尔实验室负责计算科学研究的副总裁,在那里工作了 30 多年。Aho 本科毕业于多伦多大学,在普林斯顿大学获得电气工程 / 计算机科学硕士和博士学位。

Aho 曾获得 IEEE 冯诺伊曼奖章(John von Neumann Medal)和 NEC C&C 基金会 C&C 奖。他是美国国家工程院(US National Academy of Engineering)、美国艺术与科学院(American Academy of Arts and Sciences)和加拿大皇家学会(Royal Society of Canada)的成员。同时他也是世界计算机协会(ACM)、IEEE、贝尔实验室和美国科学促进会的成员。

Ullman 是斯坦福大学名誉教授,也是以计算机科学主题的在线学习平台 Gradiance Corporation 的首席执行官。他于 1979 年加入斯坦福大学,在那之前曾于 1969 年至 1979 年在普林斯顿大学任教,并于 1966 年至 1969 年担任贝尔实验室的技术人员。厄尔曼毕业于哥伦比亚大学,在普林斯顿大学获得计算机科学博士学位。

Ullman 的荣誉包括获得 IEEE 冯诺伊曼奖章奖章、NEC C&C 基金会 C&C 奖、Donald E.Knuth 奖和 ACM Karl V.Karlstrom 杰出教育家奖。他是美国国家工程院、国家科学院、美国艺术与科学院的成员,也是世界计算机协会的成员。

1967 年,两位计算机科学家在贝尔实验室开始了他们的合作。几十年间,Aho 和 Ullman 奠定了编程语言理论、编程语言实现及算法设计和分析的基础,他们通过技术创新和影响甚广的教材为编程语言领域做出了重大贡献。两位教授早期在算法设计和分析技术方面的合作为这一时期出现的计算机科学核心理论提供了关键思路。

世界计算机协会主席科西斯(Gabriele Kotsis)解释说:“计算机编程的实践和日益先进的软件系统开发几乎支撑了在过去 50 年中社会上所有的技术变革。虽然无数研究人员和实践者为这些技术做出了贡献,但 Aho 和 Ullman 的工作尤其具有影响力,他们帮助我们理解了算法的理论基础,并为编译器(complier)和编程语言设计的研究和实践指明了方向。自 20 世纪 70 年代初以来,Aho 和 Ullman 一直是这一领域的思想领袖,他们的工作指导着一代又一代的程序员和研究人员,直到今天。”

(来源:Pixabay)

谷歌高级研究员、谷歌人工智能高级副总裁迪恩 (Jeff Dean) 补充道:“Aho 和 Ullman 在算法、形式语言理论(formal language theory)、编译器和数据库方面确立了基本概念,这些概念对当今编程和软件领域的发展起到了重要作用。他们还向人们展示了这些不同领域的研究是如何紧密联系在一起的。Aho 和 Ullman 为计算机科学引入了关键的技术性概念,包括必不可少的特定算法等。在计算机科学教育方面,他们的教材一直是培养学生、研究人员和从业人员的黄金标准。”

Aho 和 Ullman 在加入贝尔实验室之前都是在普林斯顿大学获得博士学位的,他们从 1967 年到 1969 年在贝尔实验室工作。在那期间,他们开发了用于分析和翻译编程语言的高效算法。

1969 年,Ullman 开始了在学术界的职业生涯,并最终加入了斯坦福大学。而 Aho 在加入哥伦比亚大学之前在贝尔实验室工作了 30 年。尽管在不同的机构工作,但两人的合作持续了数十年。在此期间,他们共同撰写了书籍和论文,并为算法、编程语言、编译器和软件系统引入了新技术。

影响深远的教材

Aho 和 Ullman 合著了九本影响深远的教材 (包括更新版本)——

  • A. V. Aho and J. D. Ullman, The Theory of Parsing, Translation, and Compiling, Vol. 1, Parsing. Prentice Hall, 1972. ISBN 0-13-914556-7
  • A. V. Aho and J. D. Ullman, The Theory of Parsing, Translation, and Compiling, Vol. 2, Compiling. Prentice-Hall, 1973. ISBN 978-0-13-914564-3
  • A. V. Aho, J. E. Hopcroft, J. D. Ullman, The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974. ISBN 0-201-00023-7
  • A. V. Aho and J. D. Ullman, Principles of Compiler Design. Addison-Wesley, 1977. ISBN 0-201-00022-9
  • A. V. Aho, J. E. Hopcroft, J. D. Ullman, Data Structures and Algorithms. Addison-Wesley, 1983. ISBN 0-201-00023-7
  • A. V. Aho, R. Sethi, J. D. Ullman, Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading MA 1986. ISBN 0-201-10088-6
  • A. V. Aho and J. D. Ullman, Foundations of Computer Science. W. H. Freeman/Computer Science Press, 1992.
  • A. V. Aho and J. D. Ullman, Foundations of Computer Science, C Edition. W. H. Freeman, 1995. ISBN 978-0-7167-8284-1
  • A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, Second Edition. Addison-Wesley, 2007. ISBN 978-0-321-48681-3

其中,最广为人知的两本书是:

《编译程序设计原理》(1977) Principles of Compiler Design (1977)

由 Aho 和 Ullman 合著的这本关于编译器技术的权威书籍将形式语言理论(formal language theory)和语法制导翻译技术(syntax-directed translation techniques)集成到编译器设计过程中。

由于其封面设计,它通常被称为 “龙书”。书中清晰地列出了将高级编程语言转换为机器码的各个阶段,使整个编译器构建模块化。同时作者在此书中还阐明了自己在算法方面对对有效的词法分析技术(lexical analysis)、语法分析技术(syntax analysis techniques)和代码生成技术所做贡献。

本书的最新版本《编译器:原理、技术和工具》Compilers: Principles, Techniques and Tools (与 Ravi Sethi 和 Monica Lam 合著) 于 2007 年出版,至今仍是编译器设计的标准教科书。

《计算机算法设计与分析》(1974) The Design and Analysis of Computer Algorithms (1974)

这本书由 Aho、Ullman 和 John Hopcroft(注:图灵奖得主,也是智源学术委员) 合著,被认为是该领域的经典之作,也是十多年来计算机科学研究中被引用最多的书籍之一。当计算机科学还是一个新兴领域时,它就成了全世界算法课程的标准教科书。

除了阐述他们自己对算法的贡献外,《计算机算法的设计与分析》还探讨了如何用随机存取存储器 (RAM) 作为基本模型,分析递归关系算法的时间和空间复杂性。RAM 模型还将不同的独立算法编成通用的设计方法。本书中介绍的 RAM 模型和通用算法设计技术构成了当今标准计算机科学课程的一个组成部分。

参考资料: https://awards.acm.org/about/2020-turing http://www.cs.columbia.edu/~aho/ https://en.wikipedia.org/wiki/AlfredAho http://infolab.stanford.edu/~ullman/ https://en.wikipedia.org/wiki/JeffreyUllman