如何評價《編譯系統透視:圖解編譯原理》一書?

編譯系統透視:圖解編譯原理 (豆瓣)

似乎是新出的一本編譯原理的書,在書店看了下似乎插圖很多,不知道是否適合做編譯原理入門用的書?

簡介:

本書是編譯原理領域的鴻篇巨著,中文版尚未出版,英文版權已經輸出到了美國。本書的出版將在世界範圍內產生重要影響。從以下多個角度講,本書都具有重要的里程碑意義:

● 它第一次讓編譯原理不再像是一門高深晦澀的「數學課」,而是一個可以調試、可以接觸、可以真切感受的理論體系。本書用1140 余幅信息量巨大的運行時結構圖和視頻動畫取代了同類書中複雜枯燥的數學公式,更加立體和直觀,生動地將編譯後的執行程序在內存中的運行時結構圖展現了出來。

● 它第一次將 GCC 源代碼、編譯原理、運行時結構、編譯系統原理(包含彙編與鏈接)的內在關係、邏輯與原理梳理清楚了,並將它們結合成一個整體,真正能夠讓讀者透徹掌握編譯器如何運行、如何設計,以及為什麼要這麼設計。

● 它是第一本系統解讀著名商用編譯器 GCC 核心源代碼的著作。 GCC 源代碼一共有 600 萬行,為了便於講解和閱讀,本書進行了取捨和裁剪,講解了與編譯本質相關的、最核心的 60 萬行代碼。

全書一共 8 章,具體內容和邏輯如下:

第 1 章以一個 C 程序(先簡單,後複雜)的運行時結構為依託,對程序編譯的整體過程做了宏觀講述,讓讀者對編譯有一個整體認識,這樣更容易理解後面的內容。

第 2 ~ 6 章通過實際的程序案例、結合 GCC 的源代碼,根據程序編譯的順序和流程,依次講解了詞法分析、語法分析、中間結構和目標代碼的生成,遵循了由易到難的原則,先是通過簡單程序講解清楚原理,然後通過複雜程序強化理解。

第 7 章講解了與編譯器緊密關聯的彙編器和鏈接器,讓讀者對可執行程序的最終生成有一個完整的了解。

第 8 章講解了預處理,就編譯器的執行順序而言,預處理器的執行比較靠前,之所以放在最後講,是因為它比較獨立,在讀者已經了解整個編譯過程之後再講解,讀者會更容易理解。


謝邀。題主說的是才出不久的《編譯系統透視:圖解編譯原理》一書。

豆瓣鏈接:《編譯系統透視:圖解編譯原理》

華章圖書鏈接:華章圖書 - 編譯系統透視:圖解編譯原理

樣章:編譯系統透視:圖解編譯原理 - IT168

配套視頻:《編譯系統透視》配套視頻

配套源碼:即將(也就是尚未)公開鏈接(注意!!!)。我看到公開鏈接的消息的話會更新過來。

總體印象

看到這個問題才知道新出了這麼一本書,聊有興緻地看了下目錄然後讀了一下樣章(頭3章),覺得挺不錯。還沒取找配套的視頻來看。

已經託人幫忙帶一本過來,等拿到實體書讀過之後再看看有沒有什麼要更新到這個回答的。

一句話:楊福川編輯又立功了 &>_&<

這是一本以GCC的源碼剖析為題的入門書。它以GCC的源碼為線索,對C語言的非優化編譯的整個編譯流程,包括編譯後的鏈接以及運行時結構都有圖文並茂的講解;著重講解了GCC的語法分析部分

說真的還挺震撼:敢拿產品級C語言編譯器為主題來做源碼剖析,寫作團隊還是很夠魄力的。本書有配套的裁剪版GCC 4.x系列的源碼,並且帶有配套的編譯和調試環境,這點是最最吸引的地方;然而目前配套的裁剪後源碼尚未公開,配套的調試環境似乎只是在作者之一的楊老師授課時給學生使用了。源碼剖析類的書就應該方便讀者能動手調試實際運行中的程序,這點是這本書的強項。

本書在圖解方面做得確實很不錯。許多細節步驟都有配圖,特別是介紹語法分析的部分講解得很詳細,方便讀者形象的理解每個步驟發生的變化。不過,就如書中前言所說,這些「動態」的圖解恐怕以動態圖片或者視頻的方式來展示效果會更好,而本書的頭三章也有配套視頻(鏈接在本回答開頭)。

它不是,注意不是,一本深入講解編譯「原理」的書。它並不深入介紹詞法分析或語法分析背後的理論,而是簡單帶過一點理論之後以若干案例配合圖解,結合GCC的具體實現來講解C編譯器的情況。

這意味著:這本書會貼很多帶注釋的GCC源碼;這本書也會有很多步驟分得很細的圖解——對一些讀者來說這些圖可能過於冗長了。不喜歡這種風格的源碼剖析書的同學請不要購買這本書,畢竟不是啥便宜的書orz

這本書的貼代碼和圖解風格,請參考 如何評價《編譯系統透視:圖解編譯原理》一書? - 德瑪西亞的回答

購買前請一定要讀讀樣章感受一下這是否是合適您的閱讀習慣的書。樣章鏈接在本回答頂上。

我原本的回答似乎引起了一些對這本書不正確的期待,請參考 如何評價《編譯系統透視:圖解編譯原理》一書? - 趙躍宇的回答

如果您跟引用的這個回答有相同期望的話請不要購買這本書嗯。我得想想怎麼組織語言才不容易引起誤解。

=======================================================

頭重腳輕

然而…嗯當然得有然而。

然而這本書跟許多定位在入門級別的編譯原理書一樣,「頭重腳輕」,說得不好聽有點虎頭蛇尾;詞法與語法分析占的篇幅實在太多,而對產品級C語言編譯器中真正的重頭戲——編譯優化——只有寥寥幾筆簡單帶過。有選題GCC的魄力,卻沒有把握GCC精華的結果,相當可惜。

其它定位在入門級編譯原理的書籍,通常搭配的是比較簡單的實現,例如本回答最後提到的LCC和cbc;對於比較簡單的實現把主要篇幅放在編譯器前端是很合適的,因為對應的實現中的大頭也是在這裡。而GCC的大頭都是在優化器和後端里,相信會有不少讀者是期待著了解更多跟「優化」相關的話題,而這本書偏偏沒有側重於這方面。

當然,定位如此,倒也就是這樣了。如此安排對剛接觸編譯器(特別是GCC)的讀者來說應該是比較友好的吧,嗯。

GCC中C語言的編譯器的工作流程大致可以分為:(這裡特意把前端階段拆分開來說)

輸入源碼 -&> [ 1. 預處理 libcpp ] -&> 預處理後的源碼
-&> [ 2. 詞法分析 c-lex.c ] -&> token流
前端 -&> [ 3. 語法分析 c-parse.c ] -&> AST(GENERIC形式)
-&> [ 4. 語義分析 c-typeck.c等 ] -&> AST(GENERIC形式)
-------- -&> [ 5. 平台無關中間代碼生成 Gimplify ] -&> IL(GIMPLE形式+CFG)
-&> [ 6. 平台無關優化 ] -&> IL(GIMPLE形式+CFG)
-&> [ 7. 平台相關中間代碼生成 ] -&> RTL
中端/後端 -&> [ 8. 平台相關優化 ] -&> RTL
-&> [ 9. 目標代碼生成 ] -&> 彙編 / 機器碼
-&> [ 10. 鏈接 ] -&> 可執行文件 / 共享庫文件

GCC里中端/後端都是重量級的,相比之下前端的代碼「輕量」得多。

本書絕大部分篇幅都是針對上面的2、3、4和1,有少量篇幅提到5、7、9、10,而6、8都是草草帶過。當然,就算不做任何優化也算是走完了整個編譯流程,但如果是這樣為啥要用前端代碼出名的混亂的GCC為案例來分析呢?

同樣是對產品級C編譯器做源碼剖析,要是這本書是用Clang為題感覺或許會更好。反正這本書也沒怎麼介紹GCC的優化,還不如以代碼結構更加乾淨清晰的Clang入手,把前端部分介紹好,然後簡單帶過一下LLVM,把LLVM IR、FastISel、Fast寄存器分配和從MachineInstr到目標代碼這個最簡單的流程介紹一下,書的結構還是會跟現在的保持一致,但內容上或許更易於讓讀者理解。

如果這本書能做成系列書,出個「第二冊」「第三冊」,圖解一下GCC里的各種優化,那就更好了。把High GIMPLE -&> Low GIMPLE,GIMPLE的Tree SSA形式的生成演算法,Memory SSA的計算,各種平台無關優化(特別是例如循環優化、指針分析),然後MD文件與BURS,到RTL,到局部和全局圖著色寄存器分配,到最終的代碼生成,這麼一套下來都以這本書對語法分析的詳細程度來寫出來,那得多贊吶 ^_^

=======================================================

一些細節

節選樣章里的一些地方吐點槽:

第一章,第3頁:

程序執行的本質就是代碼區的指令不斷執行,驅使動態數據區和靜態數據區產生數據變化。這一過程需要 計算機的管控。下面我們著重介紹對代碼區和動態數據區的管控。CPU 中有三個寄存器,分別是 eip、ebp 和 esp,情景如圖 1-6 所示。

這段話其實挺突兀的。我在樣章中根本搜不到「x86」的字樣,前言、第一章等介紹背景的地方都沒有提及本書是以x86平台為例子,然而這裡卻突然冒出了32位x86的三個寄存器的名字。至少把背景定位清楚也好。

-----------------------------------------

第一章,第7頁

代碼例子:

int fun(int a, int b);

int m = 10;

int main() {
int i = 4;
int j = 5;
m = fun(i, j);
return 0;
}

int fun(int a, int b) {
int c = 0;
c = a + b;
return c;
}

這裡以GCC為例,在32位x86上用-O0關閉所有優化來編譯範例代碼,得到的彙編會是:

m:
.long 10
main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $32, %esp
movl $4, 28(%esp)
movl $5, 24(%esp)
movl 24(%esp), %eax
movl %eax, 4(%esp)
movl 28(%esp), %eax
movl %eax, (%esp)
call fun(int, int)
movl %eax, m
movl $0, %eax
leave
ret
fun(int, int):
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $0, -4(%ebp)
movl 12(%ebp), %eax
movl 8(%ebp), %edx
leal (%edx,%eax), %eax
movl %eax, -4(%ebp)
movl -4(%ebp), %eax
leave
ret

可以看到GCC在這種配置下在進入一個函數時是一口氣把整個棧幀的空間都分配好了,例如main()里的:

subl $32, %esp

然後局部變數賦值時不是逐個push到棧上,而是直接在已經分配好的棧幀里賦值到對應的slot上,例如i的賦值:

movl $4, 28(%esp)

可以理解作者只是想以一個籠統的運行時模型來介紹程序運行的大致概念。書中的這組例子也是一種可能的實現方式。但既然以GCC為例,更貼合GCC的做法來講解是不是更好呢?

-----------------------------------------

目錄里有這麼一處看著很奇怪的地方:

  • 6.7 所有案例語法樹轉中間結構(RTL)的過程 754

    • 6.7.1 基礎類型數據語法樹轉高端gimple的過程 754
    • 6.7.2 用戶自定義數據語法樹轉高端gimple的過程 794
    • 6.7.3 指針類型數據語法樹轉高端gimple的過程 838
    • 6.7.4 作用域和生存期案例語法樹轉高端gimple的過程 878
    • 6.7.5 複雜表達式案例的語法樹轉高端gimple的過程 887

章節的大標題是說從語法樹生成RTL的過程,但下面的每個小章節的標題都是從語法樹到High GIMPLE的過程。

從High GIMPLE到RTL,中間還隔著High GIMPLE -&> Low GIMPLE -&> CFG -&> Tree SSA (可跳過) -&> RTL這樣的流程。沒拿到書不知道這裡實際內容怎樣,想拜託有讀到這部分的同學告知這裡實際是怎樣的。

=======================================================

其它選擇

如上文所述,要覆蓋一個從預處理-&>詞法分析-&>語法分析+語義分析-&>中間代碼生成-&>彙編-&>鏈接這樣完整的編譯流程,並不需要使用GCC這麼重量級的編譯器為題。

相比之下,入門用的、介紹C或類C語言編譯器的書,我還是更喜歡下面兩本書:

  • 《A Retargetable C Compiler: Design and Implementation》

  • 『ふつうのコンパイラをつくろう——言語処理系をつくりながら學ぶコンパイルと実行環境の仕組み』(中文翻譯版《自製編譯器》正在進行中,預計年內能上市)

其中第二本書我在這裡有簡單介紹:學習編程語言與編譯優化的一個書單

這兩本書,前者介紹的是一個完整但簡單得多的C語言編譯器LCC,有完整的編譯流程,並且講解了一些優化;後者介紹的是一個簡單的用Java實現的簡化版C的編譯器cbc,介紹了完整的編譯+鏈接流程,用Java實現十分便於修改和調試。

前者更貼近現實,而後者更簡單易懂,兩者分別適合從不同角度切入編譯原理的入門學習。

評論區有同學提到這本書:

Compiler in C - Allen Holub

這是本老書了,作者很慷慨的把書本的電子版以及配套代碼免費發布在了個人網站上(點上面的鏈接可以下載)。

這確實也是一本講得很詳細的入門書,也是圖文並茂、平易近人的風格。有興趣挖掘歷史的話這本讀讀也是輕鬆有趣。

跟其它入門書一樣,這本也是重前端輕後端的,優化部分簡單略過;目標代碼生成部分為了簡單而實現了一個「虛擬機」,這「目標代碼」其實還是C語言,可以進一步用別的C編譯器來編譯到機器碼(嗯您沒看錯)——這裡簡化得可能有點過了,彙編/具體機器碼/鏈接之類的話題都是略過。


內容不評價,這排版也太不嚴謹了,空格都被吃掉了。借用樓上的圖。


去年上過他的課!當時這本書還沒出版,特地為我們印了一套,一共三本。老師上課很逗,都聽他吹牛逼了,課上主要看他們做的視頻,還有在gcc調試程序時調試gcc,有點意思。這個團隊也非常牛逼,造了一個操作系統當時10億+都有人收購他還不出手。。

狀態轉換圖

運行時結構

擼源碼

書中各種圖,對理解幫助還是挺大的2016.4.25

給個書中的視頻鏈接吧,可以看看該書配套的視頻,非常詳細

http://m.v.qq.com/page/j/x/t/j0148vppzxt.html?ptag=targurl2.cliim.cn%23v.play.adaptor%232mreferrer=http%3A%2F%2Ftargurl2.cliim.cn%2Fjump%3Fcoding%3DFgfcFp%26targurl%3Dhttp%253A%252F%252Fv.qq.com%252Fboke%252Fpage%252Fj%252F0%252Ft%252Fj0148vppzxt.html%26key%3D0cf4d147930f34cf061597a8ff9efc2820e0777861

ps.視頻里妹子聲音很好聽喲


我去年上過他這門課,當時他這本書剛剛印刷,封面都沒設計,我們是直接拿剛印刷的白皮書(白色封面,封面上就書名)上課。當時買了第一冊,其他兩冊沒買。

這本書是是完全給編譯小白看的。記得當時缺了大半的課,因為課程上的太慢了。。書中廢話太多了。書中大部分都是圖,一個簡單的自動機都可以都可以畫個十來頁,這可能和書的定位有關,盡量讓沒有一點編譯基礎的人也能看懂。期末考試前第一冊書不到兩個小時就看完了⊙﹏⊙‖∣,講的太通俗易懂了。。其他兩冊書也沒花幾個小時看完的。

這本書講的很通俗易懂,gcc這麼高大上的東西講的這麼簡單,但是這本書只講了詞法分析,語法分析和代碼生成,最精髓的也是最有用代碼優化(個人覺得)都被閹割了。這本書可以作為入門書挺好的,這本書裡面基本沒有一個公式,產生式也很卡哇伊,畢竟像龍書虎書鯨書這種神書不是有多少人能夠啃得下來的。

-------------------------------------

出版前這本書是分成三冊的,現在作為一本書了。。前兩章(還是三章)作為第一冊。


額,隨便翻翻了這本書的pdf版,和片總討論了下感覺有些地方好像有些不怎麼嚴謹,隨便塗了塗


適合入門級gcc開發人員,但對於做gcc後端porting和後端優化的人來說,還是gcc internals比較好用。但是看到這樣一本關於gcc的書出現,我還是很震撼,畢竟國內搞做這一塊的人太少了。我也買了一本,雖然裡面大部分內容我都爛熟於心,基本沒怎麼看,但是我還是要收藏一本,以表示對這個團隊的支持。有人提到,頭重腳輕,重前端輕後端的問題,這也是沒辦法的,像gcc這種級別的編譯器中後端用的優化誰也沒法寫,因為實在太繁瑣200多個pass,幾十種target,要寫的差不多讓人懂,估計要奔著3000多頁吧,這麼大本錢,真正出版了有幾個人會買,我估計國內不會撐死超過1000本的銷量,在互聯網這麼熱的環境下有多少人專註於底層技術呢!所以,對這本書要抱著敬畏的心態,至少我是這樣的,一個gcc後端開發人員的真實想法。

這厚度,在實驗室枕著此書睡覺也是極好的!


雖然還沒買,但是老楊出品質量應該能有一定保證。記得當時他說《Linux內核設計藝術》是第一本中文翻譯回英文的計算機書,然後他要出一本gcc的書,同時簽約中文和英文,結果英文的先出版了。

於是下課時問他如何評價LLVM/Clang他說不知道,沒聽說過……


書已經到手。先大致翻了一下。

既然如此,那也就說幾句吧。

我翻過(是翻過,不是翻譯過,抱歉,辜負了大家的期待)的編譯書籍有好幾本了,龍書自不必說,一些實踐性的書籍也翻過,拜一些淺白的書籍所賜,實現一個腳本語言處理器什麼的是可以做到的,而且確實照著別人的書籍抄來並實現過。除此之外,LISP系的當然也接觸過,至於實現函數式的語言,讀王垠的《怎樣寫一個解釋器》便已可入門,當然,認真點的話,什麼SICP,EOPL,schemer 三部曲都是要讀的 -- 這些有的在我的計劃中,還沒讀完,所以我也就不評論這些書籍怎樣怎樣了。

如樓上各位同學所言,《編譯系統透視》這本書,雖是鴻篇巨制不錯,但重點在gcc的實現,而且是重前端不重後端(至少篇幅上來說是這樣)。

先說這本書的優點。

1. 圖文並茂是真的。講的似乎也很淺白易懂。看得出來寫得還是很用心的,圖真的好詳細,配合代碼注釋,只要讀者願意花時間,看不懂簡直是不可能的。不過如前面幾位大大所講,排版還有待進步就是了。

2. 解讀的實例是 gcc, 盡管現在 LLVM 各種叫囂,但是目前爲止,gcc 仍是我們這個時代最重要的計算機技術的基石之一。對於想要了解 gcc 內部實現的同學來說,確實是再好也沒有了。不過說真的,應該是比較舊的 gcc 版本了吧。

3. 順帶也講了些匯編器和鏈接器的事情。

不過這書的缺點也是蠻多的:

1. 翻了找了一會子,只看到作者吹牛逼,但沒提及網路資源究竟放在哪讓讀者去獲取(是,承認你們有水平,有幹貨,但是特麼我要的是資源和說明啊)。

2. 同樣書中似乎也沒明確說明解讀的 gcc 源碼是哪一個版本。應該是比較舊的版本了吧,前面講運行時環境那些對我來說基本是廢話了的東西,看了下基本是 32 位的東西了,實際上 64 的調用約定已經不是 32 位調用約定那樣了。而且標題告訴你是運行時環境,正確的結構應該是C語言的運行時環境 -&> 基於x86_32構架的調用約定。而且x86_64的呢...

3. 嗯,根據篇幅來看,後端的優化講得不多。由於前端是針對 gcc 的代碼,所以真的要很耐心地啃。可是如果只是想要實現一門簡單的腳本的話,可以用很多更簡單的技術手段的... 私以爲,除了像C++這麼變態的語言,前端真的不是重點。

總的來說,這本書在實踐方面稱得上是奇書一本了,但結構、理論補充方面確實有待改善。這也就使得,這本書雖然給出了很多很多的實踐細節,但在理論上做不到取代原龍書的位置,雖然封面上印的是中國龍。不過也算各有所長吧。原龍書還是必要的哈哈哈哈哈,你知道原龍書爲什麼很屌嗎,原因就是它啥都說一點又啥都沒說似的哈哈哈哈哈。

至於想把這本書當成編譯原理入門的書籍來看,個人覺得還是算了,因爲這書可能會花不少時間,如果你不是真的想維護 gcc 什麼的,花這麼多時間來學習 gcc (而且是一個舊版本的)前端的意義並不是那麼大。當然 gcc 畢竟是工業級,有空研究一下還是不錯的,比如裡面的 gimple 什麼的。

所以如果想要入門編譯原理,建議還是先大致過一下原龍書哪類書籍,看原龍書的時候不必什麼細節都摳,有個大概輪廓甚至不求甚解問題都不大,然後再看類似《自製編程語言》什麼的,如果實在是想要做編譯型的語言,也有《編譯器設計之路》(同樣也是完整給出了一個C語言實現,但要薄很多)這樣的書籍供你選擇。

以上。


其實這類書的問題在於,它並沒有把難點簡單化,而是把難點帶過去了。所以,難點依然還在那,並沒有消失。

教學用的編譯器難點其實就是三個方面,一個是語法分析、語義分析怎麼搞,不過大多數就是粗暴的簡單遞歸,不會用到比較難得文法,那就比較簡單了。

一個是符號表建立和一些雜七雜八的代碼生成的東西,當然這個估計可以歸到語義上去。

還有一個重頭就是代碼優化,這也是最難的地方也是差距最大的地方。

所以這本書當做簡單入門是可以的,但也僅僅是個入門。

我覺得槽點在於,不專門想搞這個的誰閑得沒事看這種科普性的書啊。。給人當教材又感覺難度太低了些~


饒有興趣的翻了翻該團隊的《作者簡介》。說該團隊「優勝劣汰,適者生存,自然生成」……對不起我膽小,聯想之前聽說的一些某院某所的個別奇葩導師行為,不由得好奇想知道這項目會不會跪一些可憐研究生,「不畫圖不給你這月津貼了啊,不寫書不給你畢業了啊」 ……

然後是吹牛時間:「安全操作系統可以抵禦一切已知和未知的網路入侵,曾在2014年4月1日至2014年9月30日在互聯網上懸賞1萬美金進行入侵攻擊測試,至今未有人攻破」……我想說這不厚道啊,對不起啊請允許我再次惡意的揣測一下,我能不能在自己的網站里掛一個懸賞網頁,掛五個月之後撤了,然後說至今未能攻破。而且這牛是不是有點太大,所有已知未知的網路入侵統統剛得住……

反正看這作者簡介,眼前浮現的是一個沒什麼學術本領,非常喜歡壓榨學生,申報項目往海里吹的一個教授形象……我已經不打算買了,就翻翻圖書館的就行。


開發團隊的不僅出書,還有軟體成果:

圖示化編譯器和安全操作系統,好神奇的樣子,不知道是不是吹的?

真這麼厲害是不是要翻天了……

團隊在計算機領域中始終只對最基礎的、有體系的事情感興趣,喜歡從根節點解決問題,目前已經在編譯器和操作系統等領域取得了突破性的成果,具體如下:

1. 圖示化的編譯器

成功研發出基於圖形、圖像(而非基於字元、語句)的圖示化集成開發環境,直接由圖形編譯為可執行程序,中間不再轉成一般的計算機語言。已經能夠成功編譯掃雷等界面應用程序,也可以成功編譯Linux0.11 這樣的簡單操作系統,編譯結果可以正確boot 運行。

2. 安全操作系統

研發出全新的安全操作系統。使用現有CPU、內核依據新的原理設計而成,不需要安裝任何防火牆和殺毒軟體,就可以抵禦一切已知、未知的網路入侵。此操作系統支持FTP 的基礎功能,兼容Linux。此操作系統曾經於2014 年4 月1 日至2014 年9 月30 日在互聯網上懸賞1 萬美金進行入侵攻擊測試,至今未有人攻破。


非常贊同R大說的,頭(前端)重腳(代碼優化,後端)輕。個人還是覺得擼Clang和LLVM文檔、源碼有意思。


哎,我十多年前,寫編譯器的時候,要是有這樣的一本書,應該容易多了。


這是我買過的最重的一本書,快遞小哥辛苦了。

正經的:本來想吐槽下配圖之啰嗦,不過王爽的彙編教程也是如此,這就不好下手了。


怎麼書裡面的代碼不給出來?直接看gcc源碼看不懂!

就拿lex.c來說,第一個config.h在gcc源碼裡面怎麼搜不著?


目的是讓更多的人進入編譯原理之門,而不是什麼讓「高手」更高的秘籍,因為真正的高手不是依靠一本書能夠造就的,即便是龍書之類的也一樣做不到,師傅主要是帶人入門,徒弟的修行也在乎個人居多。。。例子就不舉了


我只看了目錄,感覺理論方面的東西太少。可能我比較理論派,編譯這東西沒點理論打基礎,我總覺得不踏實,心裡沒數。


昨天看到這個問題,買了這本書,現在

看了有三個小時,我水平比較水,我覺得這本書不是在講編譯原理,而是在講gcc的代碼

理論介紹真的很少,夠用就好,一堆圖 然後放上帶注釋gcc代碼,over看了R大的回答,我以為這本是把gcc的相關代碼挑出來,重新組成一套可以運行沒有優化的代碼,我果斷是想多了


沒有看過這本書,如果和樓上所說類似於圖解tcp/ip,那應該還是適合入門的


跟 《圖解TCP/IP》一個套路,廣而不深.


推薦閱讀:

優化 C 語言程序的技巧有哪些?

TAG:C編程語言 | 編譯原理 | GCC | 如何看待評價X |