用Go語言自制解釋器
* 從零開始,自己寫一門語言
* 體驗(yàn)從無到有實(shí)現(xiàn)類C語言的樂趣
在程序員與計(jì)算機(jī)的“交流”過程中,解釋器無疑扮演著優(yōu)秀的翻譯角色。它為只懂0和1的計(jì)算機(jī)翻譯源代碼,為看似隨機(jī)的字符賦予含義。這是如何實(shí)現(xiàn)的呢?充滿好奇心的你,是否曾經(jīng)思考過這個(gè)問題?跟隨本書,你將揭開解釋器的神秘面紗,通曉它的工作原理,并編寫出自己的解釋器。本書采用Go語言來為自創(chuàng)的編程語言Monkey實(shí)現(xiàn)解釋器。你將為Monkey語言實(shí)現(xiàn)類C語法、變量綁定、基本數(shù)據(jù)類型、算術(shù)運(yùn)算、內(nèi)置函數(shù)、閉包等特性,并了解什么是詞法分析器、語法分析器和抽象語法樹。
【業(yè)內(nèi)佳評】
編譯器和語言開發(fā)是門檻較高的領(lǐng)域。我作為從業(yè)者,經(jīng)常遇到培養(yǎng)新人卻無法很快上手的問題。這套書很好地解決了此問題,在降低門檻的同時(shí),又不損失豐富性,全面展示了開發(fā)編譯器和程序設(shè)計(jì)語言的要素,因此我向所有對此有興趣的讀者推薦...
* 從零開始,自己寫一門語言
* 體驗(yàn)從無到有實(shí)現(xiàn)類C語言的樂趣
在程序員與計(jì)算機(jī)的“交流”過程中,解釋器無疑扮演著優(yōu)秀的翻譯角色。它為只懂0和1的計(jì)算機(jī)翻譯源代碼,為看似隨機(jī)的字符賦予含義。這是如何實(shí)現(xiàn)的呢?充滿好奇心的你,是否曾經(jīng)思考過這個(gè)問題?跟隨本書,你將揭開解釋器的神秘面紗,通曉它的工作原理,并編寫出自己的解釋器。本書采用Go語言來為自創(chuàng)的編程語言Monkey實(shí)現(xiàn)解釋器。你將為Monkey語言實(shí)現(xiàn)類C語法、變量綁定、基本數(shù)據(jù)類型、算術(shù)運(yùn)算、內(nèi)置函數(shù)、閉包等特性,并了解什么是詞法分析器、語法分析器和抽象語法樹。
【業(yè)內(nèi)佳評】
編譯器和語言開發(fā)是門檻較高的領(lǐng)域。我作為從業(yè)者,經(jīng)常遇到培養(yǎng)新人卻無法很快上手的問題。這套書很好地解決了此問題,在降低門檻的同時(shí),又不損失豐富性,全面展示了開發(fā)編譯器和程序設(shè)計(jì)語言的要素,因此我向所有對此有興趣的讀者推薦這套書。
——史斌(benshi001)
Go語言全球排名前50的貢獻(xiàn)者
幾年前看SICP的時(shí)候,我學(xué)習(xí)過如何寫解釋器。在書本上學(xué)習(xí)編譯原理的過程是很枯燥的。這套書讓我們可以一邊學(xué)習(xí)理論,一邊實(shí)踐。我們能夠看到,如何通過親手實(shí)現(xiàn)解釋器和編譯器擺脫學(xué)習(xí)理論的枯燥過程。
——左書祺(@Draven)
云原生工程師、Kubernetes項(xiàng)目成員、《Go語言設(shè)計(jì)與實(shí)現(xiàn)》作者
如果你熟悉解釋性語言,同時(shí)是Go語言愛好者,那么這套書就是為你編寫的。使用Go語言從零實(shí)現(xiàn)一個(gè)解釋器/編譯器,不僅讓你明白它們是如何工作的,而且你對Go語言也會(huì)有更深的理解。如果能夠跟著書中內(nèi)容實(shí)際動(dòng)手實(shí)現(xiàn)一個(gè)解釋器/編譯器,那么你的技術(shù)一定會(huì)有很大的飛躍。
——徐新華
Go語言中文網(wǎng)站長、公眾號“polarisxu”主理人
程序員的三大浪漫之一就是自制編程語言。得益于Go自身語法的簡潔性和在工程方面的平衡性,這套書通過簡明直接的代碼,一步步地向讀者揭示自制一門編程語言并不是高不可攀的事情。對于想自制編程語言又不想啃編譯原理的讀者,我推薦這套書。
——蒙卓(mengzhuo)
Go項(xiàng)目成員
這是一套很好的書,我曾在學(xué)習(xí)Go語言的時(shí)候有幸拜讀過?,F(xiàn)在,它終于有中譯本了。自制解釋器和編譯器,一聽就知道是很酷的事情。這套書的成功之處在于,它并非高屋建瓴,而是從零開始帶著我們完成解釋器和編譯器的搭建,實(shí)戰(zhàn)性很強(qiáng)。
——啟艦
2017年度CSDN博客之星、前阿里巴巴研發(fā)工程師、“啟艦雜談”主理人
在軟件設(shè)計(jì)中,開發(fā)人員經(jīng)常需要開發(fā)一些高度抽象的定制模塊。這些模塊很可能涉及領(lǐng)域特定語言(DSL)的設(shè)計(jì)和解析。如果你很熟悉編譯器的各個(gè)模塊和運(yùn)行原理,就可以很輕松地設(shè)計(jì)出適配自己項(xiàng)目的DSL。市面上關(guān)于編譯器的書有很多,這些著作往往大而全,但是不易理解。這套書的作者對內(nèi)容設(shè)計(jì)得非常精巧,通過從0到1創(chuàng)造一門編程語言來帶領(lǐng)讀者了解解釋器和編譯器的核心原理。我相信,它能給DSL設(shè)計(jì)者帶來幫助。
——李正興
騰訊高級工程師
索斯藤·鮑爾(Thorsten Ball)
Sourcegraph軟件工程師,精通多門程序設(shè)計(jì)語言,包括Go、C、JavaScript和Ruby,深諳編譯原理、系統(tǒng)編程、Unix、數(shù)據(jù)庫等相關(guān)技術(shù)?,F(xiàn)居德國,長期活躍于歐洲各大技術(shù)大會(huì)。
孫波翔
軟件工程師,碩士畢業(yè)后旅居法國。從事與Python、Go相關(guān)的研究和工作,熱愛開源,側(cè)重于Python、GUI、編譯器方向。給NumPy、PySide2、wxWidgets、Cython、Pyston v1解釋器等開源項(xiàng)目貢獻(xiàn)過代碼,另譯有《深入理解Python特性》。
