1.編譯原理學什麼?
編譯原理這門課主要關注的是編譯器方面的産生原理和技術問題,看似和軟體開發不沾邊,但從本質上來講編譯原理是屬于一個算法問題。雖然我們學習的資料結構和算法分析也是在将算法,不過講的是針對某些特定的問題而總結出的算法,而編譯原理則是講如何将進階計算機語言翻譯成計算機能直接讀懂的機器語言的算法。
主要學習的内容則是編譯語言及文法的基礎知識、詞法分析、文法分析、語義分析幾中間代碼生成、符号表組織、運作時的存儲組織配置設定、代碼優化及目标代碼生成等。
2.為什麼學習編譯原理?
作業系統和編譯系統構成程式開發者與計算機之間的基本交流界面,通過學習編譯原理這門課程掌握編譯的基本理論、常用的編譯技術,了解編譯過程及編譯系統結構和機理。通過學習編譯原理可以更好的了解程式語言的内部機制,進而更好的了解和運用程式設計語言。
我們學習一門技術,不但要知其然,還要知其是以然,這樣才能應對技術的不斷更新,才能不被技術的發展所淘汰。編譯原理就是這樣一門課程,它教會我們的不隻是編譯器構造的基本原理和流程,同時,還教給我們如何去嚴謹的去思考、編寫程式。
3.怎麼學編譯原理?
大家都認為編譯原理是一門比較難學的課程,有些學習過的網友甚至說它是大學軟體課程裡最難的一門課,而且覺得學習的實用性并不大,因為這些知識并不能直接的表現在我們的某個方面,而且使用的頻率并不高。
很多人都認為難就說明它肯定是沒有那麼好學的,但既然有這門課。我們還是得端正心态,一步一步慢慢學起。
由于編譯原理在很大程度上偏向理論方面,畢竟我們學習的是一個原理性的知識,但這并不妨礙我們将理論和實際相結合。理論難學這是很明顯的,但隻要我們能夠從實際的代碼編寫過程中找到理論的精髓,我們就能把它融會貫通。
4.思考:在沒有學習本書理論之前,如果讓你寫一個編譯器,你是什麼思路?
首先定義出已知的關鍵詞、函數等,在讀取時直接進行比對,如果相同就直接調用提前定義好的功能,不同就進行之後的判斷。
主要是要正确的定義好每個函數子產品的功能。