写点什么

龙书虎书鲸书啃不动?试试豆瓣评分 9.5 的猴书

作者:图灵教育
  • 2022 年 6 月 29 日
  • 本文字数:2041 字

    阅读完需:约 7 分钟

龙书虎书鲸书啃不动?试试豆瓣评分9.5的猴书

相传,编译原理界有三大圣书:


龙书是为 Compilers: Principles, Techniques, and Tools;

虎书是为 Modern Compiler Implementation in C;

鲸书是为 Advanced Compiler Design and Implementation。


三大巨头名声在外,但要吃透其中奥妙绝非易事。


图灵君常常收到读者询问:有没有轻量级一些的编译原理入门教程实战性很强的那种?


现在终于可以给出答案了!在介绍这套书之前,先来看看读者给出的这样一条评论:



“如果我被困在一座岛上,必须构建一门编程语言,那么这就是我要唯一带在身边的书。”



这套书的英文版具有很高的辨识度,并且在豆瓣上获得 9.5 和 9.4 的高分。



作者 Thorsten Ball 告诉图灵君,一直以来,有很多来自中国的编译器爱好者问他什么时候出中文版。现在,他终于可以分享好消息啦!


作者简介


索斯藤·鲍尔(Thorsten Ball),Sourcegraph 软件工程师,精通多门程序设计语言,包括 Go、C、JavaScript 和 Ruby,深谙编译原理、系统编程、Unix、数据库等相关技术。现居德国,长期活跃于欧洲各大技术大会。


如何阅读这套书


彩猴书——用 Go 语言自制解释器


从零开始,不用任何第三方包,从无到有手写一门类 C 语言——Monkey 语言


你将为 Monkey 实现词法分析器、语法分析器、抽象语法树和宏系统。


你写的 Monkey 语言可以绑定值和名称:


let age = 1;

let name = "Monkey";

let result = 10 * (20 / 2);


也可以将数组绑定到一个名称上:


let myArray = [1, 2, 3, 4, 5];


还可以绑定函数和名称:


let add = fn(a, b) { return a + b; };


支持调用函数:


add(1, 2);


当然,在阅读过程中,你还将教会 Monkey 更多本领!


金猴书——用 Go 语言自制编译器


帮助 Monkey 进化,实现字节码编译器和虚拟机,使其性能提升到解释器时期的 3 倍。


必须先读彩猴书,再读金猴书吗?

 

两本书有一个进阶关系。虽然你完全可以按照自己的兴趣任意选择一本读,但最佳的阅读顺序仍然是先读彩猴书,再读金猴书


这套书适合谁



为什么用 Go 语言?


Go 语言很容易阅读和理解。即使对于初学者,这套书中的代码也浅显易懂。


此外,Go 语言提供了出色的标准库和工具。仅用这些工具,不用任何第三方库,你就能写出解释器和编译器。


彩蛋:不止 Go 语言!


自从英文版出版以来,全世界的许多读者已经基于书中内容用其他语言实现了更多的 Monkey:Python、Java、Elixir、Rust、C、C++、TypeScript、C#、Dart、Haskell、V、PHP、Kotlin、Scala、Lua、Julia……


你也来快快加入挑战吧!参透程序设计语言的底层逻辑,用你最爱的语言实现 Monkey


业内佳评


编译原理是我上过的最有用的大学课程。学习为“玩具语言”编写词法分析器和运行时,有助于揭开计算机科学的神秘面纱。我建议所有不熟悉词法分析器、语法分析器和求值器的软件开发工程师阅读这套书。


——米切尔·桥本  天才程序员


编译器和语言开发是门槛较高的领域。我作为从业者,经常遇到培养新人却无法很快上手的问题。这套书很好地解决了此问题,在降低门槛的同时,又不损失丰富性,全面展示了开发编译器和程序设计语言的要素,因此我向所有对此有兴趣的读者推荐这套书。


——史斌(benshi001)  Go 语言全球排名前 50 的贡献者


几年前看 SICP 的时候,我学习过如何写解释器。在书本上学习编译原理的过程是很枯燥的。这套书让我们可以一边学习理论,一边实践。我们能够看到,如何通过亲手实现解释器和编译器摆脱学习理论的枯燥过程。


——左书祺(@Draven)  云原生工程师、Kubernetes 项目成员、《Go 语言设计与实现》作者


如果你熟悉解释性语言,同时是 Go 语言爱好者,那么这套书就是为你编写的。使用 Go 语言从零实现一个解释器/编译器,不仅让你明白它们是如何工作的,而且你对 Go 语言也会有更深的理解。如果能够跟着书中内容实际动手实现一个解释器/编译器,那么你的技术一定会有很大的飞跃。


——徐新华  Go 语言中文网站长、公众号“polarisxu”主理人


程序员的三大浪漫之一就是自制编程语言。得益于 Go 自身语法的简洁性和在工程方面的平衡性,这套书通过简明直接的代码,一步步地向读者揭示自制一门编程语言并不是高不可攀的事情。对于想自制编程语言又不想啃编译原理的读者,我推荐这套书。


——蒙卓(mengzhuo)  Go 项目成员


这是一套很好的书,我曾在学习 Go 语言的时候有幸拜读过。现在,它终于有中译本了。自制解释器和编译器,一听就知道是很酷的事情。这套书的成功之处在于,它并非高屋建瓴,而是从零开始带着我们完成解释器和编译器的搭建,实战性很强。


——启舰  2017 年度 CSDN 博客之星、前阿里巴巴研发工程师、“启舰杂谈”主理人


在软件设计中,开发人员经常需要开发一些高度抽象的定制模块。这些模块很可能涉及领域特定语言(DSL)的设计和解析。如果你很熟悉编译器的各个模块和运行原理,就可以很轻松地设计出适配自己项目的 DSL。市面上关于编译器的书有很多,这些著作往往大而全,但是不易理解。这套书的作者对内容设计得非常精巧,通过从 0 到 1 创造一门编程语言来带领读者了解解释器和编译器的核心原理。我相信,它能给 DSL 设计者带来帮助。


——李正兴  腾讯高级工程师


☟☟ 一键下单



发布于: 刚刚阅读数: 3
用户头像

图灵教育

关注

是好书,把我们联系在一起 2021.11.01 加入

人民邮电出版社旗下图灵教育。主要负责出版IT类,科普类图书。

评论

发布
暂无评论
龙书虎书鲸书啃不动?试试豆瓣评分9.5的猴书_编译原理_图灵教育_InfoQ写作社区