易燃物匯聚 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