編譯原理就是什麼?
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的通常原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工做,可是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提升軟件人員的素質和能力。
學習編譯原理有什麼好處?
從現實的方面來講,編譯原理學過以後的益處(不考慮最後都沒有入門的狀況)包括:
一、能夠更加容易的理解在一個語言種哪些寫法是等價的,哪些是有差別的
二、能夠更加客觀的比較不一樣語言的差別
三、更不容易被某個特定語言的宣揚者忽悠
四、學習新的語言效率也會更高
五、其實從語言a轉換到語言b是一個通用的需求,學好編譯原理處理此類需求時會更加遊刃有餘
不學有什麼損失?
不學編譯原理,可能永遠給各類寫編譯器的人當奴隸,覺得寫程序只能按照他們設計的語言哲學來作。學好了編譯原理,不必定非要本身寫語言,可是至少能把不少其餘程序員以爲很酷的東西看得透徹一點,不會被程序語言的設計表象騙到太多。
如何學習編譯原理?
端正認識:編譯原理在靜態文本處理上有普遍的應用,舉個簡單的例子,把HTML文件轉化爲純文本,利用編譯原理來實現很是簡單,理解了編譯原理的實用性,大概能夠提升學習興趣。反覆看書:這個辦法看起來最笨,倒是基本的方法。結合源碼來看:這是經典教材《Compiler Design in C》的做者Allen Hollub建議的方法。這本教材的特點就是包含了大段yacc,lex的代碼。這也是個好方法,並且,只有看懂了代碼,才能說在根本上理解了理論。固然,要徹底看懂yacc的代碼工做量是很大的,並且一樣要先理解理論。刪繁就簡,拈輕怕重:網上流傳較廣的一篇《編譯原理學習導論》(做者四川大學唐良)就基本是這種思路,對於詞法分析,做者避免了自動機理論和集合推演的介紹,直接搬出源碼來,大大下降了理解難度,對於語法分析,做者介紹了遞歸降低和LL文法及相應的源碼,而對LR文法,只說「理解理論就能夠了「。雖然這種方法迴避了對於難點的學習,可是用這種方法學習,能夠在較短期內編寫出一個可以運行的詞法分析器和語法分析器,能夠大大提升學習積極性。程序員