《编译器设计(第3版)》中文版启动审读:与你一同精雕细琢编译器“圣经”

编译器“圣经”《编译器设计(第3版)》中文版招募审读者,快来为经典作品贡献力量!

原文标题:编译器领域圣经之一《编译器设计(第3版)》中文版审读招募!

原文作者:图灵编辑部

冷月清谈:

图灵社区正在为备受期待的《编译器设计(第3版)》中文版招募审读者。该书被誉为编译器领域的“圣经”,在亚马逊上拥有4.4星好评,并荣获2024年教材与学术作者协会教材卓越奖。本次第三版在内容上进行了大幅更新,主要变化包括中间表示前置、删除属性文法、整合语法驱动翻译内容、重构教学结构、更新寄存器分配内容以及新增即时编译专题。作者为Keith D. Cooper和Linda Torczon,译者包括邢明杰、陈璇和张汉凯。审读工作共需14人,每章由两人负责。感兴趣的专业人士可以通过扫描二维码提交报名信息,为这部经典之作的完美呈现贡献力量。

怜星夜思:

1、《编译器设计(第3版)》在编译器领域被誉为“圣经”,你认为这本书最核心的价值或者说最吸引你的地方是什么?
2、第三版中提到“中间表示(IR)前置”,你认为将IR提前到语法驱动翻译之前有什么好处?如果没有扎实的IR基础,会给后续的编译器学习带来哪些障碍?
3、书中新增了即时编译(JIT)专题,你认为JIT技术未来的发展趋势会是怎样的?它会在哪些领域发挥更大的作用?

原文内容

不用再到处打听进度,也不用再翻看往期的预告。那本让无数开发者念念不忘、在编译器领域催更名单上常年屠榜的《编译器原理(第3版)》中文版,真的要来了!

这本书在亚马逊上拥有 4.4 星的高分好评,被无数读者誉为编译器领域的“圣经”。我们深知这本书的分量,为了不辜负这份跨越时光的期待,目前中文版已进入最后的精修阶段。

我们诚邀专业的你加入,以审读人的身份,用你深厚的技术功底为中文译文最后“把关”,助力这部神作以最完美的姿态与读者见面。

为什么说它是工程派的顶峰

在编译器领域,如果说有的书是在讲什么是编译器,那么 Keith Cooper 和 Linda Torczon 的这本《编译器原理》(Engineering a Compiler)就是在教你如何构建一个现代编译器。

凭借对教学与工程实践的卓越贡献,本书第 3 版刚刚荣获了 2024 年教材与学术作者协会(TAA)教材卓越奖。它不仅仅是课堂上的教科书,更是工业界开发者手中的实战手册。

第三版新增内容

在这一版中,你会读到最前沿的干货:

第 3 版的修订主要受到两方面变化的推动:编程语言翻译技术使用方式的演进,以及学生技术背景的转变。在这两种驱动力下,作者对编译器构造的教学方式进行了持续调整,第 3 版系统性地记录了这些经过课堂实践检验的改动。

整体上,第 3 版对全书结构进行了重新组织:删除了部分旧版主题,引入了新的内容;在第 2 版中已大幅修订的优化相关章节(第 8~10 章)基本保持不变,其余章节,尤其是第 4~7 章,则进行了较大幅度的重构与更新。同时,鉴于即时编译器(JIT)的广泛应用,新增了专门章节系统介绍相关技术。

主要变化包括:

  • 中间表示(IR)前置:将中间表示的内容调整至第 4 章,置于语法驱动翻译之前,以便读者在学习翻译技术前先建立必要的基础。

  • 删除属性文法:移除了早期版本中关于属性文法的内容,转而强调已成为主流的特定翻译(ad-hoc translation)方法。

  • 整合语法驱动翻译内容:现第 5 章对语法驱动翻译的机制和应用进行了更深入的讲解,整合了前两版中分散于多章的相关主题。

  • 重构教学结构:第 7 章基于大量课堂实验,采用了新的组织方式,以提升教学效果。

  • 更新寄存器分配内容:第 13 章聚焦两类核心分配器——基于 Best 算法的局部分配器,以及基于 Chaitin–Briggs 思路的全局分配器,并在进阶内容中介绍了线性扫描、SSA 分配、迭代合并等现代变体。

  • 新增即时编译专题:第 14 章概述运行时优化与即时编译技术,帮助读者理解 JIT 与传统预先编译器之间的关系。

总体而言,第 3 版的目标依然是:作为一本教材或一门课程,引导读者理解现代编译器中的关键问题,并为解决这些问题提供扎实的背景知识

    作者简介

    Keith D. Cooper,莱斯大学计算机科学系计算工程专业 Doerr 特聘教授,曾任该系系主任。Cooper 博士的研究课题涵盖过程间数据流分析、标量指令优化、寄存器分配以及指令调度等方面。 

    Linda Torczon,莱斯大学计算机科学系高级研究员,其研究内容主要包括代码生成、过程间数据流分析和优化,以及编程环境。

    译者简介

    邢明杰,中国科学院软件研究所高级工程师,长期从事编译工具链相关工作,具有多年编译原理授课经验。

    陈璇,东华大学本科,Linux 发行版研发工程师,LibreOffice riscv64 移植贡献者。

    张汉凯, Debian Developer,参与维护 Debian rustc。

    目录抢先看


    审读要求

    审读每章两个人,共需要 14 个人。

    报名二维码

    如果您想为这部领域神作的中文版贡献一份力量,请扫码提交报名信息。我们期待与专业的你同行!👇

    没学过编译原理,但是根据经验,任何复杂系统的学习都应该是先了解一个骨架,然后再填充细节。IR就像是编译器的骨架,提前了解可以帮助我们建立全局观,避免一开始就陷入到各种语法细节中。

    IR就像是编程中的数据结构设计,数据结构没设计好,再优秀的算法也跑不起来。 编译器也是一样,没有扎实的IR基础,后续的优化、代码生成都会受到限制。 感觉就像是盖房子,地基没打好,上面盖再多也是空中楼阁。

    我理解的“圣经”称号,不仅仅在于它覆盖了编译器设计的方方面面,更在于它能指导实践。很多理论书看完就忘,但这本书感觉是可以放在手边,随时翻阅解决实际问题的。对我来说,它的价值在于理论与实践的结合,能真正指导我构建编译器。

    大胆预测一下,未来JIT可能会和WebAssembly结合得更紧密。WebAssembly作为一种通用的字节码格式,如果能结合JIT技术,就可以在各种平台上实现高性能的Web应用。这对于前端来说,是一个巨大的福音。

    JIT的未来发展趋势一定是更加智能化和自适应。比如,通过机器学习来预测程序的运行模式,从而进行更有效的优化。另外,我认为JIT会在Serverless Computing、云原生等领域发挥更大的作用,因为这些场景对性能和资源利用率的要求非常高。

    IR前置,我认为可以帮助读者更早地理解编译器的工作流程。在学习具体的翻译技术之前,先对IR有一个整体的认识,这样才能更好地理解翻译的目的和手段。IR是编译器不同阶段的桥梁,提前了解它,可以避免在后续学习中迷失方向。

    我觉得是这本书的与时俱进。它不像一些老书,内容陈旧。它一直在更新,反映了编译器技术的最新发展,比如这次新增的即时编译(JIT)专题。 这种持续更新的学习资料,才更有价值。

    可能是因为这本书是工程派的顶峰吧。其他的书可能告诉你编译器是什么,但这本书直接教你如何去构建一个现代的编译器。这种实战性对于开发者来说是非常有吸引力的。

    我觉得JIT现在已经很普及了,像Java、.NET都在用。未来可能在嵌入式系统里面有更多应用吧,毕竟现在嵌入式设备的性能越来越强,很多时候也需要动态编译来优化性能。当然,前提是解决好资源占用和安全问题。