1樓:
開始不要從乙個整體的開始,可以從自己喜歡的部分開始:
### 偏型別系統
0 BNF 或者狀態機其實可以先從 inductive set definition 開始
1 如果熟悉sql , 可以先看三值邏輯 , 謂詞 , 語義,數理邏輯
乙個比較完整的程式語言太多內容了
### 機器無關優化
可以做sql的邏輯優化 ,條件下推
###ssr一類控制流圖優化有一些書
2樓:
虎書,鯨書,engineering a compiler,這三本書我都翻過,大概明白了編譯原理是講什麼的。
我的建議,如果你不是從事相關方面的工作,我建議沒必要花太多時間學習編譯原理那些演算法資料結構,一些概念。它對應用軟體開發程式設計師的幫助,遠遠不如計算機組成原理,作業系統,資料結構及演算法
3樓:
初級的做到 @傳說中的真漢子 那樣就很好了。中級的還要加上IR去做各種變換。高階的就是jit或者aot,指令選擇,排程還有暫存器分配。
4樓:
我嘗試著學過幾次。
最後還是放棄了。
因為實際工作上,沒啥用。
因為感覺編譯器的編寫,很提高綜合技能。
這句話有待商榷。
編譯器的編寫,確實能提高你的編碼能力。
尤其是底層的能力。
但是你現在的瓶頸,是編碼能力嗎?
至少我覺得大部分程式設計師。
編碼能力還是過關的。
最欠缺的是業務理解,和業務抽象能力。
不要為了學習而學習。
那樣會很累。
5樓:魔元
編譯原理及實踐
原書名: Compiler Construction:Principles and Practice
原出版社 PWS/Thomson Learning譯者: 馮博琴等
馮博琴的《編譯原理》也不錯
6樓:
編譯原理本質是什麼?
如何應用?
大多數人以為只是用來處理程式語言……
編譯原理的本質:把非結構化的資料/半結構化的資料,結構化的方法;都結構化了,你愛怎麼處理就怎麼處理了
7樓:畸形pupil
應該沒什麼了吧,要說學什麼的話,可能就是找一下程式設計的邏輯感,另外就是數學和英語知道你寫的程式編譯器是怎樣編譯的,學好了以後能夠開發編譯器(那要很牛很牛)。更實際點的好處是學會使自己寫的程式更優,進步程式的功率。
另外,我覺得裡邊《執行時的儲存安排與管理》這章很有用,它能通知你編譯器是怎樣在記憶體中為程式的函式(包含變數)分配空間的,裡邊的對倉庫的解說很具體,幫助你更深入了解記憶體分配情況。
8樓:HackerXiang
看完《編譯原理與實踐》和《計算機系統要素》, 就可以寫乙個像我這樣的編譯器了
9樓:張健飛
目前網易雲課堂在開編譯原理的MOOC課程, 可以跟著學 編譯原理 - 網易雲課堂。
斯坦福也曾經開過這門課, 但目前只有課程, 老師沒有在跟 Log into your Stanford Online Account。
ps:MOOC編譯原理學習群 69754380
10樓:天將軍
我就是直接看龍書,每天還要上班,就上下班路上看,週末看,現在看了一年,已經快看完第11章了,全部看懂理解,而且總結了書中一些小錯誤,中文整體翻譯還是很好的,有些地方還有譯者仔細思考後的小注釋,但是建議在看不懂時和英文原版對照一下。看書最重要的是理解演算法的本質,我有時乙個演算法會想幾天才真正理解。另外第11章要求線性代數的知識,否則看不懂。
11樓:馮東
不二法門是讀一本好書。還沒學會是因為沒有好書。我不知道為什麼這本書被低估,在我看來遠好過其它經常被提到的「經典」:
Compiler Construction: Principles and Practice: Kenneth C.
Louden: 9780534939724: Amazon.
com: Books
當年我有兩個問題,直接寫信給作者,每次解答都很及時詳細。
國內有影印版,很便宜。
12樓:楚軒
可以試試程式語言實現模式這本書,我覺得寫的比較平易近人,龍書雖然偏理論,但是搞懂了看著很帶感的,可以自己一步步去實現個小語言來練習
繼續學習編譯原理的意義是什麼?
我覺得用什麼語言寫程式,寫什麼程式不重要,重要的是裡面涉及的一些演算法,邏輯那些。本人也大三。在學校經常會發現。當你實現某些程式的時候。有些時候你要找不到當前語言的實現方法。找到其他語言的實現方法。然後就只能被迫看其他語言。看懂裡面的思路演算法。再轉成當前的。 難道你們編譯課木有大作業這個東西嗎 任...
如何高效的自學編譯原理?
42nd Mu00 Engineering a Compiler Second Edition Parsing Techniques 2 Second Edition Modern Compiler Design Second Edition Advanced Compiler Design and...
不學習編譯原理對於CS專業的學生有多大的損失?
三葉 如果你用不上,當然沒啥損失.但你很可能用得上.我就是這樣,學得時候沒有怎麼學.但是過去了才知道到處都要用.最簡單的,你知道clang和gcc的區別和聯絡麼?你知道啥是llvm麼?這都是我遇到的報錯.再比如,如果你想手寫資料庫,也得會編譯原理.這麼說吧,幾乎所有的專業課都是這樣,學的時候不覺得有...