编程龙书的两位作者凭借编译器技术获得2020年图灵奖


Alfred Aho和Jeffrey Ullman凭借开创性的编译器和算法工作而获得2020年图灵奖。
周三,全球最大的计算机专业人士协会计算机科学协会表示,Aho博士和Ullman博士将因其在支持计算机编程语言的基本概念方面所做的工作而获得今年的图灵奖。Ullman和Aho之间的合作是开创编译器技术的先河,该合作始于1967年在AT&T的传奇研究中心贝尔实验室。
在过去的五十年中,计算机科学家已经建立了越来越直观的编程语言,使人们越来越容易地为台式机,笔记本电脑,智能手机,汽车甚至超级计算机创建软件。编译器的工作是将这些语言指令转换成处理器真正理解的机器代码,也就是将这些语言有效地转换为计算机可以理解的一和零。Aho和Ullman帮助找出了将高级程序转换为低级机器代码的编译器技术。
Aho和Ullman还共同撰写了2篇经典的CS书籍:绿色和红色的“龙书”(1977年和1986年)。


 
黑客新闻网友评论:
龙书今年获得了图灵奖!想象一下,您在40年前所做的事情赢得了大奖。
 
十年后,我开始阅读《龙书》,并意识到如何修改NFA正则表达式搜索算法,以解决我在数字取证和电子数据展示中遇到的问题。
 
我经常看到龙书被当作一个出气筒的时候。似乎在某些时候,这本书与K&R一起成为了毫无根据的批评的目标。
 
《龙书》在解析上花费了太多时间,而在优化上却花了不多的时间。公平地说,本书的第一版是1986年出版的。看起来第二版(2006年)增加了3章有关数据流分析和并行化的章节。
 
《龙之书》的第一版就表明了Aho和Ullman当时就领先了很多吗?
  
从事正则表达式引擎工作的人不多。
 
我的硕士论文是为Haskell进行代码生成的,其中我花了相当长的时间来学习树模式匹配,AST操作,寄存器分配等。通过理解代码生成的这些不同阶段,可以大大提高速度。
在编译器的上下文中,另一个原因是通过微优化词法分析和解析没有太多收获。毕竟,一个代码只被编译一次并执行多次。因此,您知道很多乐趣在哪里。不幸的是,本科生通常会错过编译器课程中最复杂的部分。
 
过去,词法分析是编译器最热的部分,因为它必须接触源代码的每个字节,并且后​​续阶段没有太多数据需要处理。但是在1990年代,随着优化编译器成为主流技术,这种情况不再成立。
 
尽管我在大学期间真的很喜欢编译器,但我从没想过出于实际原因会构建一个编译器。我最终将这些知识用于两个非常有趣的项目。其中一个是Java中的模板引擎,用于将变量转换为SQL查询中的子句。另一个是PL / SQL的解释器,该解释器有助于提取过程和功能以对生产环境中的软件包进行部分更新(用户可以选择将哪些过程发送到生产环境,而不必更新整个软件包)。
 
很奇怪,我记得这本书太笨拙,晦涩难懂,当我最初阅读它时,没有足够的说明性文字来编写编译器课程……也许我记错了。
 
我实际上认为前端(词法分析,语法分析,语义分析)对大多数软件工程师而言更为重要。
想象一下:在大多数职业中,您都不需要在后端工作。但是,如果您想解析某些内容(例如配置文件),则Lexing和解析非常有价值。这类事情在日常工作中比在代码生成和优化中更常见。
 
建议大多数软件工程师避免发明新的配置或其他DSL及其解析器/词法分析器。这很容易导致难以调试的程序和长期的技术债务。始终首先研究现有的和经过测试的解决方案(甚至是JSON!)。即使您不发明语言,也可以避免使用高级格式(例如无上下文语法)来编写低级解析器/词法分析器(请参阅Lark https://github.com/lark-parser/lark)。定义和维护语法要容易得多。
 
在“数据结构和算法”是我们最先进的教科书的黑暗时代,我们将Aho,Hopcroft和Ullman的作者三人称为“三个智者”。很高兴看到Aho和Ullman得到了更多的重视。
 
真正的“弦论”大师
 
奖金没有发给React创作者吗?好吧,也许明年。