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