用Go语言自制解释器

用Go语言自制解释器
内容简介:

* 从零开始,自己写一门语言

* 体验从无到有实现类C语言的乐趣

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

【业内佳评】

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

——史斌(benshi001)

Go语言全球排名前50的贡献者

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

——左书祺(@Draven)

云原生工程师、Kubernetes项目成员、《Go语言设计与实现》作者

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

——徐新华

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

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

——蒙卓(mengzhuo)

Go项目成员

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

——启舰

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

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

——李正兴

腾讯高级工程师


索斯藤·鲍尔(Thorsten Ball)

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

孙波翔

软件工程师,硕士毕业后旅居法国。从事与Python、Go相关的研究和工作,热爱开源,侧重于Python、GUI、编译器方向。给NumPy、PySide2、wxWidgets、Cython、Pyston v1解释器等开源项目贡献过代码,另译有《深入理解Python特性》。

作者简介:
下载地址:
下载用Go语言自制解释器
标签:
文章链接:https://www.dushupai.com/book-content-36809.html(转载时请注明本文出处及文章链接)
读书评论: 更多
  • liuwill
    09-25
    跟着作者用单元测试驱动开发,一步一步让纯文本变成程序,然后运行起来的过程非常有趣。计算机系统,就像变魔法,念出咒语,神奇的事情就自动发生了。这一切的基础就是编译器。产生魔法的前提是,需要清晰准确没有二义性的指令和执行器,然后提供内置函数或者别名,简化调用。对于编译器,代码本身其实也是数据的载体,核心是数据,通过dsl和指令集自动生成程序的思想,早在编程语言诞生之初就已经相伴而生。一直觉得递归下降分析太直观简单,不像上下文无关文法那样体现计算机科学的艺术,不过其实只要定义一个dsl和生成器,递归下降分析器也完全可以自动生成。这次刻意练习对作者来说,最大的收获其实是这本书。同样对我们的挑战是,已有知识的学习和练习是不够的,而是如何创新,运用知识、花费时间的同时有成果,能够为世界创造价值
  • ankh04
    10-07
    跟着敲完了代码,很有成就感!去敲下一本去了!
  • 爱自由
    12-05
    揭开了解释器的面纱!先定义词法单元,然后再绑定每个词法单元的方法,同时也添加不同方法所在的环境。看一遍只是有个认知,环境还是得去实现下代码。
猜你喜欢: