如何想學點編譯原理,又不想直接看龍虎之類的書籍,太多理論,乾燥?

《編程語言實現模式》

「我的龍書被打入冷宮了!」——Dan Bornstein


編譯原理及實踐

整本書就是一個完整的例子,把這本書的代碼敲完你就懂了。

輔助著看紫龍書效果更好。


《程序員的自我修養》,可以看看

內容簡介 · · · · · ·

這本書主要介紹系統軟體的運行機制和原理,涉及在Windows和Linux兩個系統平台上,一個應用程序在編譯、鏈接和運行時刻所發生的各種事項,包括:代碼指令是如何保存的,庫文件如何與應用程序代碼靜態鏈接,應用程序如何被裝載到內存中並開始運行,動態鏈接如何實現,C/C++運行庫的工作原理,以及操作系統提供的系統服務是如何被調用的。每個技術專題都配備了大量圖、表和代碼實例,力求將複雜的機制以簡潔的形式表達出來。本書最後還提供了一個小巧且跨平台的C/C++運行庫MiniCRT,綜合展示了與運行庫相關的各種技術。


龍書我覺得蠻好的啊。。裡面講的都很詳細很透徹

理論知識是必須要把握的吧我覺得,不能夠知其所以然的話早晚會吃虧的。


入門:看龍書的第一章和第二章

進階:看《計算機程序的構造和解釋》順便學lisp

高級:看完龍書

精通:看完龍虎鯨書

Ps,我目前還在進階階段。面試已經能和面試官就編譯原理的一些概念談笑風生,也可以用編譯原理的知識理解語言和輪子里的一些技術。


推薦 mooc 中科大華保健老師的編譯原理課程,看完之後可以讀青木峰郎的自製編譯器跟著寫個簡單的編譯器,最後推薦編譯器設計作為進階


題主會js嗎, 會js看這個

thejameskyle/babel-handbookgithub.com圖標

如果只是想快速了解一下,其實可以看龍書前兩章+附錄


第一,問自己為什麼要學編譯原理?是有什麼需求所以你必須要學編譯原理?假如你有特定的需求,你必須要啃這本書,那沒別的辦法,不管有多枯燥,多理論,辭彙多麼詰屈聱牙,那就給自己設定一個小目標,一章章看下去,如果還是看不下去,說明你現在的水平還不夠看這種書。

第二,想學編譯原理,不一定上來就看這種大部頭,一點點學上去,量變引起質變,這是最基本的道理。上面的回答推薦了很多好書,隨便拿一本先看看,如果有興趣再看稍微深一點的。

所以重點是要麼興趣導向,要麼項目需求導向,憑空突然想看龍書是不切實際的,也是不可能看完的(排除你有超能力)。


這種現在沒什麼用的屠龍技,要的就是理論,不然學來幹嗎?搬磚都找不到地方。


「自己動手寫編譯器、連接器」,這本書實踐性很強,理論較少,可以先看看。

然後把C的語法簡化了,自己試著寫寫,寫不出來就再進一步簡化。

不必管過多理論,C代碼該怎麼執行,你就怎麼寫解釋程序。

轉機器碼那一步,先不實現,搞個解釋器先。



我也是在自學,數學課太多了別的課排不過來。。你看看這門公開課:https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/about 這個是self-paced的課,隨時都能註冊。你先看看視頻,如果覺得感興趣或者覺得需要深入學習的話再看書也可以。


虎書理論還多啊。。。。要不去看看EAC2有多少頁= =


《自動機理論、語言和計算導論》


推薦閱讀:

目前,網頁腳本語言三個主流:PHP,JSP,.NET。究竟是一種怎麼樣的形勢?是三國鼎立,還是其他的形勢呢?各自的真正優勢,又是在哪裡?
Lua 5.3為何很慢?該不該升級?
怎樣編寫一個自動登陸校園網的腳本?
想拍攝一個視頻,該如何寫腳本?腳本中需要包括哪些內容?

TAG:編程語言 | 編程 | 軟體設計 | 腳本語言 | 編譯原理 |

分頁阅读: 1 2