輕輕松松進(jìn)行C++語(yǔ)言學(xué)習(xí)
C++語(yǔ)言為每一個(gè)軟件行業(yè)的從業(yè)人員,無論是開發(fā)人員、項(xiàng)目經(jīng)理、還是測(cè)試人員,也要不斷適應(yīng)這個(gè)趨勢(shì),我認(rèn)為C++語(yǔ)言的靈活和簡(jiǎn)單只會(huì)使我們的工作更簡(jiǎn)單和更輕松。
在20世紀(jì)50年代,編譯器的編寫一直被認(rèn)為是十分困難的事情,第一Fortran的編譯器據(jù)說花了18年的時(shí)間才完成。在人們嘗試編寫編譯器的同時(shí),誕生了許多跟編譯相關(guān)的理論和技術(shù),而這些理論和技術(shù)比一個(gè)實(shí)際的編譯器本身價(jià)值更大。就猶如數(shù)學(xué)家們?cè)诮鉀Q著名的哥德巴赫猜想一樣,雖然沒有最終解決問題,但是其間誕生不少名著的相關(guān)數(shù)論。
推薦C++語(yǔ)言參考書
雖然編譯理論發(fā)展到今天,已經(jīng)有了比較成熟的部分,但是作為一個(gè)大學(xué)生來說,要自己寫出一個(gè)像TurbocC,Java那樣的編譯器來說還是太難了。不僅寫編譯器困難,學(xué)習(xí)編譯原理這門課程也比較困難。
正是因?yàn)榫幾g原理學(xué)習(xí)相對(duì)困難,那么就要求有好的教師和好的教材。教師方面不是我們能自己更改的,而在教材方面我們卻可以按自己的意愿來閱讀。我下面推薦幾本好的編譯原理的教材。我推薦的書籍都是國(guó)外的經(jīng)典教材,因?yàn)樵趪?guó)內(nèi)的教材中,確實(shí)還沒發(fā)現(xiàn)什么讓人滿意的。
第一本書的原名叫《CompilersPrinciples,Techniques,andTools》,另外一個(gè)響亮的名字就是龍書。原因是這本書的封面上有條紅色的龍,也因?yàn)殁本书栽r嘁朐?砘?×煊蛉肥堤?忻???所以很多國(guó)外的學(xué)者都直接取名為龍書。最近機(jī)械工業(yè)出版社已經(jīng)出版了此書的中文版,名字就叫《編譯原理》。該書出的比較早,大概是在85或86年編寫完成的,作者之一還是著名的貝爾實(shí)驗(yàn)室的科學(xué)家。
里面講解的核心編譯原理至今都沒有變過,所以一直到今天,它的價(jià)值都非凡。這本書最大的特點(diǎn)就是一開始就通過一個(gè)實(shí)際的小例子,把編譯原理的大致內(nèi)容羅列出來,讓很多編譯原理的初學(xué)者很快心里有了個(gè)底,也知道為什么會(huì)有這些理論,怎么運(yùn)用這些理論。而這一點(diǎn)是我感覺國(guó)內(nèi)的教材缺乏的東西,所以國(guó)內(nèi)的教材都不是寫給愿意自學(xué)的讀者,總之讓人看了半天,卻不知道里面的東西有什么用。
第二本書的原名叫《ModernCompilerDesign》,中文名字叫做《現(xiàn)代編譯程序設(shè)計(jì)》。該書由人民郵電出版社所出。此書比較關(guān)注的是編譯原理的實(shí)踐,書中給出了不少的實(shí)際程序代碼,還有很多實(shí)際的編譯技術(shù)問題等等。
此書另外一個(gè)特點(diǎn)就是其“現(xiàn)代”而字。在傳統(tǒng)的編譯原理教材中,你是不可能看到如同Java中的“垃圾回收”等算法的。因?yàn)镴ava這樣的解釋執(zhí)行語(yǔ)言是在近幾年才流行起來的東西。如果你想深入學(xué)習(xí)編譯原理的理論知識(shí),那么你肯定得看前面那本龍書,如果你想自己動(dòng)手做一個(gè)先進(jìn)的編譯器,那么你得看這本《現(xiàn)代編譯程序設(shè)計(jì)》。
第三本書就是很多國(guó)內(nèi)的編譯原理學(xué)者都推薦的那本《編譯原理及實(shí)踐》。或許是這本書引入國(guó)內(nèi)比較早吧,我記得我是在高中就買了這本書,不過也是在前段時(shí)間才把整本書看完。此書作為入門教程也的確是個(gè)不錯(cuò)的選擇。
C++語(yǔ)言書中給出的編譯原理講解也相當(dāng)細(xì)致,雖然不如前面的龍書那么深入,但是很多地方都是點(diǎn)到為止,作為大學(xué)本科教學(xué)已經(jīng)是十分深入了。該書的特點(diǎn)就是注重實(shí)踐,不過感覺還不如前面那本《現(xiàn)代編譯程序設(shè)計(jì)》的實(shí)踐味道更重。
C++語(yǔ)言的重點(diǎn)還是在原理上的實(shí)踐,而非前面那本那樣的技術(shù)實(shí)踐。《編譯原理及實(shí)踐》在講解編譯原理的各個(gè)部分的同時(shí),也在逐步實(shí)踐一個(gè)現(xiàn)代的編譯器TinyC.等你把整本書看完,差不多自己也可以寫一個(gè)TinyC了。作者還對(duì)Lex和Yacc這兩個(gè)常用的編譯相關(guān)的工具進(jìn)行了很詳細(xì)的說明,這一點(diǎn)也是很難在國(guó)內(nèi)的教材中看到的。
推薦了這三本教材,都有英文版和中文版的。很多英文好的同學(xué)只喜歡看原版的書,不我的感覺是這三本書的翻譯都很不錯(cuò),沒有必要特別去買英文版的。理解理論的實(shí)質(zhì)比理解表面的文字更為重要。
【編輯推薦】






