如何學習編譯原理?

時間 2021-05-06 23:56:09

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麼?這都是我遇到的報錯.再比如,如果你想手寫資料庫,也得會編譯原理.這麼說吧,幾乎所有的專業課都是這樣,學的時候不覺得有...