《東南大學 編譯原理 64講》 學習筆記

簡介
閉包

IPB Image
 

編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的通常原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。

編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工做,可是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提升軟件人員的素質和能力。

編譯:就是將程序語言進行翻譯,生成可供用戶直接執行的二進制代碼,便可執行文件。學習

所有內容大體如課程目錄所示。

本視頻的配套教程可使用陳火旺版的編譯原理,習題也基本一致。

課程主講人: 廖力。我的感受這個老師講的很不錯,條理清晰,邏輯分明。推薦一下。

編譯原理通常認爲是較難的一門課.從網上的評論來看,有人說學了一年半軟件理論,就一門編譯看不懂;有人甚至說它是大本軟件課程裏最難的一門;有人抱怨國內的編譯教材沒有一本容易懂的。 從筆者學習實踐來看,第一次學了一個多月,理論部分只知其一;不知其二,第二次學了一星期,基本看懂詞法分析的理論部分,語法分析就只知其一;不知其二了,第三次學了一星期,才基本看懂詞法分析和語法分析.由此看來,這門課確實有難度.網上有的帖子,把編譯器的編寫搞得高深莫測通常,彷佛難度極大,很是人能及.   優化

編譯原理究竟難在哪裏?筆者的體會,主要在這幾點:   spa

1.錯誤認識: 不少人覺得編譯原理只能應用在寫程序語言的編譯器上,以爲用處不大,學習興趣不高.並且可能以爲寫編譯器就必須徹底手工來寫.   翻譯

2.自動機理論: 象NFA,DFA之類,比較抽象,要費些腦子,特別若是學離散數學時沒有學自動機理論的話,更是須要多花點時間.   視頻

3.集合論的推演: 主要是一些閉包運算之類,數學基礎很差的話,學起來也會感到吃力.   blog

4.LR文法: 主要是又引入了自動機   教程

無論哪本編譯教材,即便是絕對經典」龍書」也不例外,都要涉及到這幾個難點.因爲這些內容自己很差懂,做者有再大的本事,也很難把書寫得象小說那麼流暢好懂.  明確了難點,接着想對策.大體有這麼幾種:   遞歸

1.端正認識: 編譯原理在靜態文本處理上有普遍的應用,舉個簡單的例子,把HTML文件轉化爲純文本,利用編譯原理來實現」很是」簡單.理解了編譯原理的實用性,大概能夠提升學習興趣.   ip

2.反覆看書: 這個辦法看起來最笨,倒是基本的方法.忘了是哪位名人說過,書只要多看,總能看得懂的.   

3.結合源碼來看: 這是經典教材Compiler Design in C的做者Allen Hollub建議的方法.這本教材的特點就是包含了大段yacc,lex的代碼.這也是個好方法,並且,只有看懂了代碼,才能說在根本上理解了理論.固然,要徹底看懂yacc的代碼,工做量是很大的,並且一樣要先理解理論.   

4.刪繁就簡,拈輕怕重.網上流傳較廣的一篇《編譯原理學習導論》(做者四川大學唐良)就基本是這種思路,對於詞法分析,做者避免了自動機理論和集合論推演的介紹,直接搬出源碼來,大大下降了理解難度,對於語法分析,做者介紹了遞歸降低和LL文法及相應的源碼,而對LR文法,只說」理解理論就能夠了」.雖然這種方法迴避了對於難點的學習,可是用這種方法學習,能夠在較短期內編寫出一個可以運行的詞法分析器和語法分析器,能夠大大提升學習積極性.

 



相關文章
相關標籤/搜索