
索斯藤·鮑爾
本書是《用Go語言自制解釋器》的續篇。在自制解釋器時,你已經爲Monkey語言實現了類C語法、變量綁定、基本數據類型、算術運算、內置函數、閉包等特性。是時候讓Monkey繼續成長了!在本書中,Monkey將繼續“進化”,並最終成長爲成熟的程序設計語言。在已有詞法分析器、語法分析器和抽象語法樹的基礎上,你將爲Monkey語言定義字節碼指令,指定操作數,編寫反彙編程序,構建執行字節碼的虛擬機。通過動手學習,你將能夠體驗從無到有實現類C語言的樂趣。
強烈推薦對編程語言底層實現感興趣和希望自己實現一個編程語言的人閱讀,建議先閱讀作者另外一本書《用Go語言自制解釋器》,本書使用了很多前一本書中的AST和解析器。 0.兩本書都是人狠話不多的類型,理論只是略有提及(只能對某些人來說這是缺點),然後就是上手寫代碼。它們的一大特點是測試用例很完備。 1.作者自己創建了一個麻雀雖小五臟俱全的語言monkey,一本書實現瞭解釋器,一本書實現了編譯器。monkey語言涵蓋大多數編程語言的特性,變量、函數、閉包,函數是第一類值,除了沒有類,其他該有的都有了 2.書中的代碼我都一個字符一個字符的敲過來的,理解一遍再敲完,運行之後再理解,受益匪淺。建議有條件的都能敲一敲,這是實戰爲主的書。代碼照着敲只要沒敲錯都能運行。 3.兩本書是我目前看到的技術書中bug最少的,目前我只發現第二本書在某個測試用例中有個地方明顯寫錯了
抽絲剝繭的從編譯器生成字節碼,到虛擬機執行字節碼的過程完整的介紹給了讀者。函數和閉包這部分內容是全書的核心知識點也是難點,通過調試代碼一步步的啃下來收穫不少。
這本書是寫給喜歡自己動手,喜歡看代碼勝過看文字描述的字節碼虛擬機和編譯器學習者,同時作者很好的實踐了測試驅動的開發方法。符合上述畫像的會覺得本書和他的前置書《用Go語言自制解釋器》都是神作。如果你只是想了解理論,此書講的比較少,而且代碼實現稍顯複雜。總體來說,是值得推薦的。
終於有人翻譯這本書了。3年前看的英文版的,自己也寫了近萬行代碼。英文版也是本通俗易懂沒有複雜詞彙的書籍。。再看一遍,對比下看英版時理解可能有誤的地方。