编译原理-学习资源推荐-01
经典必读圣经(理论深厚)
《编译原理》(Compilers: Principles, Techniques, and Tools)
昵称:龙书(Dragon Book),因为封面是红、紫、绿色的龙。
简介:这是编译原理领域最权威、最经典的教材,没有之一。内容涵盖了词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等所有方面。
版本建议:建议阅读第二版(紫龙书),内容更新,更贴近现代编译器实践。
适合人群:希望系统性、深入研究编译理论的开发者、计算机专业的学生。
缺点:理论性非常强,对于初学者可能有些枯燥和困难。可以作为精读或参考书。
现代与实践入门(动手驱动)
《Crafting Interpreters》 by Robert Nystrom
网站(免费阅读): craftinginterpreters.com
简介:这是一本“神书”!作者是 Google Dart 团队的成员。它用非常清晰、易懂的语言,手把手带你用 Java 和 C 分别实现两种不同风格的解释器(树遍历解释器和字节码虚拟机)。代码质量极高,讲解非常透彻。
优点:
完全免费:整本书都在网站上公开。
实践驱动:让你在实践中理解概念,而不是死记硬背理论。
社区活跃:有中文翻译项目和很多学习者。
适合人群:强烈推荐给所有初学者! 即使你没有编译原理基础,也能跟得上。
中文翻译也有 强烈建议!
《编译器工程》(Engineering a Compiler)
简介:这是另一本非常优秀的现代教材,被很多世界名校作为教材。它比“龙书”更侧重于实践和工程实现,讲解了许多现代编译器(如 LLVM)中使用的技术和思想。
优点:理论和实践结合得很好,结构清晰,比“龙书”更容易阅读。
适合人群:想要理论与实践并重,并且希望了解现代编译器架构的学习者。
在线课程与教程
Stanford CS143: Compilers
简介:斯坦福大学经典的编译原理公开课,由 Alex Aiken 教授主讲。课程网站上有完整的讲义、作业和项目资料。跟着做一个学期的项目,你会对编译器有非常深入的理解。
资源:你可以在网上搜索 "Stanford CS143" 找到历年的课程网站。
网站: LLVM Kaleidoscope Tutorial
简介:如果你想了解现代编译器后端框架,LLVM 是必经之路。这个官方教程会指导你为一个叫做 "Kaleidoscope" 的玩具语言,一步步构建一个基于 LLVM 的编译器前端。
优点:这是学习 LLVM API 和思想的最佳入门实践。
适合人群:有一定 C++ 基础,并希望了解和使用 LLVM 的开发者。
学习步骤
首选《Crafting Interpreters》
在有了实践经验后,再去阅读《编译器工程》或者挑战《编译原理》(龙书)。
学习 LLVM Kaleidoscope 教程,了解现代编译器是如何通过分层架构(前端、中端优化、后端)来工作的。这会让你从“玩具项目”迈向“工业级工具”。
去阅读相关的博客文章或观看在线课程