易燃物汇聚 YouTube 有声书与书评
用Go语言自制解释器 封面

用Go语言自制解释器

索斯藤·鲍尔

3900人在读
24.5万字总字数
¥49.9定价

有声书与视频解读 YouTube视频解读 6

内容简介

在程序员与计算机的“交流”过程中,解释器无疑扮演着优秀的翻译角色。它为只懂0和1的计算机翻译源代码,为看似随机的字符赋予含义。这是如何实现的呢?充满好奇心的你,是否曾经思考过这个问题?跟随本书,你将揭开解释器的神秘面纱,通晓它的工作原理,并编写出自己的解释器。本书采用Go语言来为自创的编程语言Monkey实现解释器。你将为Monkey语言实现类C语法、变量绑定、基本数据类型、算术运算、内置函数、闭包等特性,并了解什么是词法分析器、语法分析器和抽象语法树。

读者书评

★★★★★

非常棒,根据本书我自己基于AST实现了DSL的例子,受益很多

★★★★★

我不懂编译原理和 Go,我是用 Kotlin 实现的书中的例子——因为我擅长 Kotlin。我由此对编译原理和 JVM 有了更深层的理解,并且激发了我对这个领域的兴趣,想要更深入地学习。什么是好书?这就是。

★★★★★

这是一本活狠话不多的书,上来就是代码,没什么理论,很硬核。代码质量很高,直接可以运行。虽然没理论,按书上的例子写完,几乎懂了编译原理,如果再看一看理论,应当能达到融会贯通的境界。

★★★★★

- 用Go语言自制解析器 writingAnInterpreterInGo 2022.6; 使用Go语言为自制Monkey语言实现解析器 教科书900页.blog50行ruby实现Lisp解释器 词法分析/语法分析/求值/扩展/宏

★★★★★

很值得看的书!书中提到的阅读材料和文献也很值得拜读。我的建议是不管你熟不熟悉go都用go以外的语言去实现一遍!可以有效防止照抄代码!还可以同时了解、练习两种语言、开阔思维! 用rust把前四章的功能实现了一遍,很有意思!不过rust不带GC,GC就暂时不管了🤣所以最好选一门有gc的语言。也可以说作者从一个角度展示了go的一些优秀特性。

★★★★★

这是一本实操性远大于理论的书。它不太适合对编译原理完全不了解,没有接触过lisp语言,对递归理解不够深刻的人。这本书的阅读难度在于,书中大量的代码,需要写出来或者调试才能理解。作者花费大量的篇幅写了非常完备的测试用例,从工程的角度来讲,非常的有意义。整个流程也是软件开发的典范。作者相当于展示了一个实验性质的项目如何过度成为完备可用项目的过程。书中最精彩的地方可能在pratt parser这个自顶向下递归算法的解析器,它比教科书中的上下文无关文法的实现简单很多,而且这个手写的解析器是完全可用的,意味着你熟练掌握后可以用来解析其他你想解析的语言。然后是书中各种语法规则的实现,你会感受到一个类js语言的实现需要做非常多的情况处理,语法的一致性越低,你需要做的工作就越多,相比之下你会发现lisp系语言为什么可以如此简单。书中大量使用了递归算法,这会简化代码,但也会增加理解的难度。本书的增章讨论了宏,虽然是最后补充的,但作为本书的升华完全足够,它揭示了宏的根本原理,直接将范围拓展到元编程,将会感受到编程语言可以表达的本质,这是很多流行语言都所不具备的能力(当然也包括go语言)。 虽然go非常简单,但是本书可能还是需要稍微熟练的go技能才可以比较顺利的实操。总之,这是一本好书,是通过写出代码或者调试代码来阅读和理解的书,作者虽然不是专业的教育者,没有通过习题和问题来教授知识,但是能做到如此完整测试的工程实属不易,读者可以自行安排阅读的方式。

★★★★★

是一本给愿意动手实现的学习者不可多得好书。通过本书对词法分析、语法分析、求值等具体实现有一个认识,虽然没有像龙书那样把编译原理讲的完善,但通过自制的方式,让你从代码层面对理论落地有一个认识,对理论的理解会大有帮助。虽然也有不少这种自制类书籍,但此书用Go这种现代语言来写一遍,而且没有使用第三方库,让学习者更容易接受。

★★★★★

很早的时候只有英文版,一句一句读完,用c++重新实现了一版。即使没有编译原理基础,也是可以看懂的。英文原版读起来也不费劲,满分推荐。

★★★★★

大学学的的编译原理早就忘了,只有一些模糊不清的名词,具体的逻辑和原理已经不记得了。这本书从简单的朴素的开发一门自己的语言想法出发,从源码词法语法求值的原理,用go代码浅显易懂的方式带着读者实现自己的猴子语言,受益匪浅,对于想了解基础的编译原理读者很有帮助。

★★★★★

好书推荐,用C#跟着实现了一遍,地址: gitee搜CSharpMonkey

书籍信息

作者索斯藤·鲍尔
译者孙波翔
出版社人民邮电出版社有限公司
出版时间2022-06-01
ISBN9787115588289
分类计算机-编程设计
格式EPUB
完结状态连载中
章节数47