
索斯藤·鲍尔
本书是《用Go语言自制解释器》的续篇。在自制解释器时,你已经为Monkey语言实现了类C语法、变量绑定、基本数据类型、算术运算、内置函数、闭包等特性。是时候让Monkey继续成长了!在本书中,Monkey将继续“进化”,并最终成长为成熟的程序设计语言。在已有词法分析器、语法分析器和抽象语法树的基础上,你将为Monkey语言定义字节码指令,指定操作数,编写反汇编程序,构建执行字节码的虚拟机。通过动手学习,你将能够体验从无到有实现类C语言的乐趣。
强烈推荐对编程语言底层实现感兴趣和希望自己实现一个编程语言的人阅读,建议先阅读作者另外一本书《用Go语言自制解释器》,本书使用了很多前一本书中的AST和解析器。 0.两本书都是人狠话不多的类型,理论只是略有提及(只能对某些人来说这是缺点),然后就是上手写代码。它们的一大特点是测试用例很完备。 1.作者自己创建了一个麻雀虽小五脏俱全的语言monkey,一本书实现了解释器,一本书实现了编译器。monkey语言涵盖大多数编程语言的特性,变量、函数、闭包,函数是第一类值,除了没有类,其他该有的都有了 2.书中的代码我都一个字符一个字符的敲过来的,理解一遍再敲完,运行之后再理解,受益匪浅。建议有条件的都能敲一敲,这是实战为主的书。代码照着敲只要没敲错都能运行。 3.两本书是我目前看到的技术书中bug最少的,目前我只发现第二本书在某个测试用例中有个地方明显写错了
抽丝剥茧的从编译器生成字节码,到虚拟机执行字节码的过程完整的介绍给了读者。函数和闭包这部分内容是全书的核心知识点也是难点,通过调试代码一步步的啃下来收获不少。
这本书是写给喜欢自己动手,喜欢看代码胜过看文字描述的字节码虚拟机和编译器学习者,同时作者很好的实践了测试驱动的开发方法。符合上述画像的会觉得本书和他的前置书《用Go语言自制解释器》都是神作。如果你只是想了解理论,此书讲的比较少,而且代码实现稍显复杂。总体来说,是值得推荐的。
终于有人翻译这本书了。3年前看的英文版的,自己也写了近万行代码。英文版也是本通俗易懂没有复杂词汇的书籍。。再看一遍,对比下看英版时理解可能有误的地方。