書好就要強烈推薦——選自豆瓣《編譯器設計(第2版) 》書評

紫鳳發表於2012-12-27

我現在在看這本書的原版,基本快看完了。我覺得對於對編譯有興趣,特別是後端優化有興趣的同學,這本書絕對是值得推薦的。

enter image description here

編譯技術是電腦科學中的顯學,無數學者專家們的心血凝結成汗牛充棟的資料,而且這些資料也隨著時間在飛速增加。因此,對於編譯來講,沒有那本書就是“一本足夠”了的,但是,這本書應該是最為接近這個目標的一本書了。

一般我們說得比較多的是三大經典,“龍書”,“虎書”和“鯨書”,最後一本我沒有看過,但是“龍書”和“虎書”讀過的部分都有一些缺點。“龍書”最為經典,沒有之一,對前端的講解是我看過的書中最為清晰和準確的。但是另一方面,即使是第二版,對後端的講解不夠現代化,提到SSA的只有半頁紙,很多地方有點微言大義的感覺。我覺得“龍書”中講後端,只有資料流分析——格和半群這些數學概念是如何對映到具體演算法中,這一部分非常精彩,這本書比不上。"虎書“則失之過於簡略,頁數最少,卻塞下大量內容,講解必然不過詳細。同時,我不習慣虎書中硬掰成ML風格的C語言,看著彆扭。

這本書是2011年出的,內容上說絕對現代化。第五章講IR時就引入了SSA。我覺得這個是很必要的,畢竟幾乎所有的實用編譯器都以SSA作為IR。後面提到的後端相關的概念,演算法等等,我作為一個工作和編譯沾點邊的人,發現這些也的確是實際工作中經常遇到的內容。換句話說,這本書中描述的內容更接近於真實的編譯相關工作。比如說,很少有編譯器會考慮直接在DAG上做公共表示式的刪除,一般都會用value numbering這樣一種更好的方法代替。做編譯的人有些可能連前端parser都不大懂,他們只會關心control dependence,data dependence之類的。這些概念和演算法,在這本書都有詳細的講解。

另外,這書相對第一版進步也不小。第一版的內容框架基本保留了,但是講解詳細了很多。特別是第一版中文版被翻譯毀了的情況下,讓人對這一版期待更多。

推薦下該書作者的講義,http://www.cs.rice.edu/~keith/512/2011/Lectures/。有些時候看不大懂,可以參考一下相應章節的講義,可能會有用。

最後宣告下,我不是託,也沒有看過中文版,上面的評論都只針對原版。據說郭旭是非常靠譜的譯者,希望這本書會讓他收穫更多的聲譽。

本文由思寇特.熊 (我愛巴赫) 發表在豆瓣《編譯器設計(第2版) 》的書評,題目為小編新增。

相關文章