好書妙評之《編譯器設計》
亞馬遜書評:
1、非常好的編譯器圖書,5星
有用:6/6
作者:Dr. Bruce Watson(帕羅奧多,美國)
我是一名教授,曾經寫過編譯器,也買過很多相關圖書,比如Aho、Ullman、Goos、Waite、Wirth等作者的書,是編譯器圖書的超級粉絲。很欣慰,在過去幾年裡出版了一些涵蓋現代編譯器工程的好書,這本書(第1版和第2版)就是這類圖書中最佳的一本。其他的圖書還有:
- Aho/Sethi/Ullman/Lam的Compilers: Principles, Techniques, and Tools:好書,龍書的新版,不過太厚,難於用在教學上。說實話,有點越來越複雜。
- Allen/Kennedy的Optimizing Compilers for Modern Architectures: A Dependence-based Approach:另一本好書,涉及了一些優化的最佳結果。有點像最新版的龍書,不過我的學生努力學後,還是沒法領悟。
- Muchnick的Advanced Compiler Design & Implementation:也是一本好書,只是沒有更新。
相比之下,這本書表述清晰,又不過於簡潔,不僅容易消化,而且涵蓋了有趣的新演算法和資料結構,既能應用於當今類似(與資料結構相關的,比如SSA)優化和程式碼生成的熱點話題,也能應用於前端。比如,詞法分析一章講述了Brzozowski的極小化演算法。總而言之,這是現代編譯器工程的一本極好的圖書。
2、最好的編譯器優化的理論圖書,4星
有用:3/4
作者:Andrew Pape(墨爾本,澳大利亞)
這是一本純理論圖書,不過,我從書名上看不出來。
如果你還沒有寫過自己的編譯器,那麼建議去看看其他書。比如Brinch Hansen on Pascal Compilers,它包含的理論較少,有很多程式碼,這些程式碼很容易明白,理解後你可以修改自制的編譯器。
我寫過編譯器(大部分基於Hansen的方式),使用“自下而上”的方法,這很便於編碼。那本書雖然是編譯器很好的入門書,但沒有討論“自底向上”解析或程式碼優化。
這本書的前半部分幫我很好地複習了編譯技術。我可以很輕鬆地閱讀,瞭解之前從Hansen那本書知道的內容。剩下的部分就不同了,因為它很好地解釋了“自底向上”解析。我在讀龍書或其他書時,都沒有發現它們講述這種解析方式。我對前半部分的印象很深。
第二部分關於優化。這個主題,Hansen的書要麼是簡單地提及(但沒有給出具體的實現),要麼就是沒說。Hansen的方式是使用基於棧的機器,對於優化程式碼只能是簡單為之,並不好。在這本新書裡,作者沒有使用基於棧的方法,而是暫存器方法,這樣可以應對很多型別的優化。這是很費勁的工作。書中有一些圖,但對我來說還是覺得有些少。虛擬碼用來解釋每種優化技術,但是工作中總是有特例。我喜歡不斷地總結,但當我面對章末的問題時,我很快意識到我還不能完全理解書中的內容,我也意識到我無法使用當前的虛擬碼實現程式碼優化。
從書中,我學到了無數種優化程式碼的技術,這裡展示了編譯器的研究領域。我有不少疑惑,但還是能很好地理解優化理論。很多技術用了縮寫詞,可是我總是記不清它們代表什麼,這阻礙了我學習。
對於一學期課程,Hansen的書最好,因為它實踐性強。這本書對於你鞏固相關的知識,為將來進行研究是有好處的。還有其他關於優化的書,但這本已經包含了足夠的主題和理論。
這是本好書,我少給了一個星,就是覺得它有點太理論了。
3、編譯器的最佳圖書 (針對第1版),5星
有用:105/105
作者:Jos van Roosmalen,阿姆斯特丹自由大學
這真是一本編譯器的超級好書,也是你能買到的最新的編譯器書。
首先,這是一本偏理論的書。如果你想買的書是“編碼/構建編譯器”,你肯定會失望。所以,如果你要找一本學習編碼的書,這本書就不適合你。與其他偏理論的圖書相比,這本書的文字並不枯燥,它有很好的結構佈局,給出了豐富的例項,所有主題都銜接、聯絡得很好。這本書讓母語不是英語的讀者也能讀來暢快,更何況是從小就說英語的人呢。
讀這本書就像讀一本小說……它包含了很多的圖表,但並沒有擠得滿滿的,一切都解釋得很清晰。
你可以把這本書當做編譯器的入門書,我強烈建議把這本書推薦給大學本科以上的學生閱讀。你不需要獲得數學的碩士學位,一樣能看明白這本書,所有的數學內容都講得很清楚。你若是有演算法、虛擬碼等方面的知識,那理解起來就更輕鬆了。對於沒有接受過正規電腦科學教育的讀者,我建議你先讀本比較實用的圖書,因為你會發現這本書有點太理論了。
這本書主要講述的是程式碼優化。按作者(還有我)的想法,編譯器前端(掃描/解析等)如今已經變成了商品元件,而後端(程式碼生成)是差別所在。所以,如果你要找一本編譯器優化的書,這本正合適。
如果你找的是更實用的書,我建議你去讀Watt & Brown寫的Programming Language Processors in Java,那本書講述瞭如何用Java語言構建棧式虛擬機器,其高階特性包括記錄、過程/函式、陣列等。要是能結合這本Engineering a Compiler,你會在實踐上得到一些領悟。如果你要找本語言設計圖書,我建議你讀Programming Language Pragmatics。這兩本書都值得你買。
相關文章
- 好書妙評之《程式設計師的數學》程式設計師
- 好書妙評之《卓越程式設計師密碼》程式設計師密碼
- 好書妙評之《Erlang/OTP併發程式設計實戰》程式設計
- 好書妙評之《重構:改善既有程式碼的設計》
- 好書妙評之《Pro C# 5.0》C#
- 好書妙評之《精通Android 4》Android
- 好書妙評之《圖靈的祕密》圖靈
- 好書妙評之《R語言實戰》R語言
- 書好就要強烈推薦——選自豆瓣《編譯器設計(第2版) 》書評編譯
- 好書妙評之《自然使用者介面設計:NUI的經驗教訓與設計原則》UI
- 名家點評之《編譯器設計(第2版)》編譯
- 好書妙評之《量化:大資料時代的企業管理》大資料
- 好書短評之《Linux/Unix設計思想》Linux
- 好書妙評之《c#詳解》(原書名 《Illustrated C# 2012》)C#
- 可程式設計的編譯器程式設計編譯
- 好書短評之《SQL權威指南》SQL
- 好程式設計師web前端教程分享CSS預編譯器的再次理解程式設計師Web前端CSS編譯
- 好書短評之《演算法帝國》演算法
- 好書短評之《七週七語言》
- 好書短評之《精彩絕倫的CSS》CSS
- 設計模式之直譯器模式設計模式
- 百科全書!相見恨晚!好書妙評之《親愛的介面:讓使用者樂於使用、愛不釋手》
- eBookBinder for mac(電子書編譯器)Mac編譯
- 好書短評之《專案管理修煉之道》專案管理
- JAVA設計模式之直譯器模式Java設計模式
- 程式語言和編譯器書單(1)編譯
- 好程式設計師分享Linux重器vi編輯器程式設計師Linux
- 好書推薦之《Android應用UI設計模式》AndroidUI設計模式
- 好書短評之《HTML5 Canvas基礎教程》HTMLCanvas
- 23種設計模式之直譯器模式設計模式
- 書評:軟體設計哲學
- 《程式設計師健康指南》書評程式設計師
- 走進Golang之編譯器原理Golang編譯
- 好書短評之《奇思妙想:15位計算機天才及其重大發現》計算機
- gcc 編譯器與 clang 編譯器GC編譯
- 折騰Java設計模式之直譯器模式Java設計模式
- 20.java設計模式之直譯器模式Java設計模式
- WDM驅動程式設計之編譯安裝篇 (轉)程式設計編譯