當前位置:首頁 » 編程軟體 » 編譯原理第一版

編譯原理第一版

發布時間: 2025-03-30 16:08:08

Ⅰ 為什麼要學習編譯原理(轉)

大學課程為什麼要開設編譯原理呢?這門課程關注的是編譯器方面的產生原理和技術問題,似乎和計算機的基礎領域不沾邊,可是編譯原理卻一直作為大學本科的必修課程,同時也成為了研究生入學考試的必考內容。編譯原理及技術從本質上來講就是一個演算法問題而已,當然由於這個問題十分復雜,其解決演算法也相對復雜。我們學的數據結構與演算法分析也是講演算法的,不過講的基礎演算法,換句話說講的是演算法導論,而編譯原理這門課程講的就是比較專註解決一種的演算法了。在20世紀50年代,編譯器的編寫一直被認為是十分困難的事情,第一Fortran的編譯器據說花了18年的時間才完成。在人們嘗試編寫編譯器的同時,誕生了許多跟編譯相關的理論和技術,而這些理論和技術比一個實際的編譯器本身價值更大。就猶如數學家們在解決著名的哥德巴赫猜想一樣,雖然沒有最終解決問題,但是其間誕生不少名著的相關數論。 推薦參考書 雖然編譯理論發展到今天,已經有了比較成熟的部分,但是作為一個大學生來說,要自己寫出一個像TurbocC,java那樣的編譯器來說還是太難了。不僅寫編譯器困難,學習悶數編譯原理這門課程也比較困難。 第一本書的原名叫《CompilersPrinciples,Techniques,andTools》,另外一個響亮的名字就是龍書。原因是這本書的封面上有條紅色的龍,也因為獗臼樵詒嘁朐?砘?嘴域確實?忻?所以很多國外的學者都直接取名為龍書。最近機械工業出版社已經出版了此書的中文版,名字就叫《編譯原理》。該書出的比較早,大概是在85或86年編寫完成的,作者之一還是著名的貝爾實驗室的科學家。裡面講解的核心編譯原理至今都沒有變過,所以一直到今天,它的價值都非凡。這本書最大的特點就是一開始就通過一個實際的小例子,把編譯原理的大致內容羅列出來,讓很多編譯螞罩首原理的初學者很快心裡有了個底,也知道為什麼會有這些理論,怎麼運用這些理論。而這一點是我感覺國內的教材缺乏的東西,所以國內的教材都不是寫給願意自學的讀者,總之讓人看了半天,卻不知道裡面的東西有什麼用。 第二本書的原名叫《ModernCompilerDesign》,中文名字叫做《現代編譯程序設計》。該書由人民郵電出版社所出。此書比較關注的是編譯原理的實踐,書中給出了不少的實際程序代碼,還有很多實際的編譯技術問題等等。此書另外一個特點就是其現代而字。在傳統的編譯原理教材中,你是不可能看到如同Java中的垃圾回收等演算法的。因為Java這樣的解釋執行語言是在近幾年才流行起來的東西。如果你想深入學習編譯原理的理論知識,那麼你肯定得看前面那本龍書,如果你想自己動手做一個先進的編譯器,那麼你得看這本《現代編譯程序設計》。 第三本書就是很多國內的編譯原理學者都推薦的那本《編譯原理及實踐》。或許是這本書引入國內比較早吧,我記得我是在高中就買了這本書,不過也是在前段時間才把整本書看完。此書作為入門教程也的確是個不錯的選擇。書中給出的編譯原理講解也相當細致,雖然不如前面的龍書那麼深入,但是很多地方都是點到為止,作為大學本科教學已經是十分深入了。該書的特點就是注重實踐,不過感覺還不如前面那本《現代編譯程序設計》的實踐味道更重。此書的重點還是在原理上的實踐,而非前面那本那樣的技術實踐。《編譯原理及實踐》在講解編譯原理的各個部分的同時,也在逐步實踐一個現代的編譯器TinyC.等你把整本書看完,差不多自己也可以寫一個TinyC了。作者還對Lex和Yacc這兩個常用的編譯相關的工具進行了很詳細的說明,這一點也是很難在國內的教材中看到的。 推薦了這三本教材,都有英文版和中文版的。很多英文好的同學只喜歡看原版的書,不我的感覺是這三本書的翻譯都很不錯,沒有必要特別去買英文版的。理解理論的實質比理解表面的文字更為重要。 編譯原理的實質 幾乎每本編譯原理的教材都是分成詞法分析,語法分析(LL演算法,遞歸下降演算法,LR演算法),語義分析,運行時環境,中間悶悉代碼,代碼生成,代碼優化這些部分。其實現在很多編譯原理的教材都是按照85,86出版的那本龍書來安排教學內容的,所以那本龍書的內容格式幾乎成了現在編譯原理教材的定式,包括國內的教材也是如此。一般來說,大學裡面的本科教學是不可能把上面的所有部分都認真講完的,而是比較偏重於前面幾個部分。像代碼優化那部分東西,就像個無底洞一樣,如果要認真講,就是單獨開一個學期的課也不可能講得清楚。所以,一般對於本科生,對詞法分析和語法分析掌握要求就相對要高一點了。 詞法分析相對來說比較簡單。可能是詞法分析程序本身實現起來很簡單吧,很多沒有學過編譯原理的人也同樣可以寫出各種各樣的詞法分析程序。不過編譯原理在講解詞法分析的時候,重點把正則表達式和自動機原理加了進來,然後以一種十分標準的方式來講解詞法分析程序的產生。這樣的做法道理很明顯,就是要讓詞法分析從程序上升到理論的地步。 語法分析部分就比較麻煩一點了。現在一般有兩種語法分析演算法,LL自頂向下演算法和LR自底向上演算法。LL演算法還好說,到了LR演算法的時候,困難就來了。很多自學編譯原理的都是遇到LR演算法的理解成問題後就放棄了自學。其實這些東西都是只要大家理解就可以了,又不是像詞法分析那樣非得自己寫出來才算真正的會。像LR演算法的語法分析器,一般都是用工具Yacc來生成,實踐中完全沒有比較自己來實現。對於LL演算法中特殊的遞歸下降演算法,因為其實踐十分簡單,那麼就應該要求每個學生都能自己寫。當然,現在也有不少好的LL演算法的語法分析器,不過要是換在非C平台,比如Java,Delphi,你不能運用YACC工具了,那麼你就只有自己來寫語法分析器。 等學到詞法分析和語法分析時候,你可能會出現這樣的疑問:詞法分析和語法分析到底有什麼?就從編譯器的角度來講,編譯器需要把程序員寫的源程序轉換成一種方便處理的數據結構(抽象語法樹或語法樹),那麼這個轉換的過程就是通過詞法分析和語法分析的。其實詞法分析並非一開始就被列入編譯器的必備部分,只是我們為了簡化語法分析的過程,就把詞法分析這種繁瑣的工作單獨提取出來,就成了現在的詞法分析部分。除了編譯器部分,在其它地方,詞法分析和語法分析也是有用的。比如我們在DOS,Unix,Linux下輸入命令的時候,程序如何分析你輸入的命令形式,這也是簡單的應用。總之,這兩部分的工作就是把不規則的文本信息轉換成一種比較好分析好處理的數據結構。那麼為什麼編譯原理的教程都最終把要分析的源分析轉換成樹這種數據結構呢?數據結構中有Stack,Line,List這么多數據結構,各自都有各自的特點。但是Tree這種結構有很強的遞歸性,也就是說我們可以把Tree的任何結點Node提取出來後,它依舊是一顆完整的Tree。這一點符合我們現在編譯原理分析的形式語言,比如我們在函數裡面使用函樹,循環中使用循環,條件中使用條件等等,那麼就可以很直觀地表示在Tree這種數據結構上。同樣,我們在執行形式語言的程序的時候也是如此的遞歸性。在編譯原理後面的代碼生成的部分,就會介紹一種堆棧式的中間代碼,我們可以根據分析出來的抽象語法樹,很容易,很機械地運用遞歸遍歷抽象語法樹就可以生成這種指令代碼。而這種代碼其實也被廣泛運用在其它的解釋型語言中。像現在流行的Java,.NET,其底層的位元組碼bytecode,可以說就是這中基於堆棧的指令代碼的。 關於語義分析,語法制導翻譯,類型檢查等等部分,其實都是一種完善前面得到的抽象語法樹的過程。比如說,我們寫C語言程序的時候,都知道,如果把一個浮點數直接賦值給一個整數,就會出現類型不匹配,那麼C語言的編譯器是怎麼知道的呢?就是通過這一步的類型檢查。像C++語言這中支持多態函數的語言,這部分要處理的問題就更多更復雜了。大部編譯原理的教材在這部分都是講解一些比較好的處理策略而已。因為新的問題總是在發生,舊的辦法不見得足夠解決。 本來說,作為一個編譯器,起作用的部分就是用戶輸入的源程序到最終的代碼生成。但是在講解最終代碼生成的時候,又不得不講解機器運行環境等內容。因為如果你不知道機器是怎麼執行最終代碼的,那麼你當然無法知道如何生成合適的最終代碼。這部分內容我自我感覺其意義甚至超過了編譯原理本身。因為它會把一個計算機的程序的運行過程都通通排在你面前,你將來可能不會從事編譯器的開發工作,但是只要是和計算機軟體開發相關的領域,都會涉及到程序的執行過程。運行時環境的講解會讓你更清楚一個計算機程序是怎麼存儲,怎麼裝載,怎麼執行的。關於部分的內容,我強烈建議大家看看龍書上的講解,作者從最基本的存儲組織,存儲分配策略,非局部名字的訪問,參數傳遞,符號表到動態存儲分配(malloc,new)都作了十分詳細的說明。這些東西都是我們編寫平常程序的時候經常要做的事情,但是我們卻少去探求其內部是如何完成。 關於中間代碼生成,代碼生成,代碼優化部分的內容就實在不好說了。國內很多教材到了這部分都會很簡單地走馬觀花講過去,學生聽了也只是作為了解,不知道如何運用。不過這部分內容的東西如果要認真講,單獨開一學期的課程都講不完。在《編譯原理及實踐》的書上,對於這部分的講解就恰到好處。作者主要講解的還是一種以堆棧為基礎的指令代碼,十分通俗易懂,讓人看了後,很容易模仿,自己下來後就可以寫自己的代碼生成。當然,對於其它代碼生成技術,代碼優化技術的講解就十分簡單了。如果要仔細研究代碼生成技術,其實另外還有本叫做《》,那本書現在由機械工業出版社引進的,十分厚重,而且是英文原版。不過這本書我沒有把它列為推薦書給大家,畢竟能把龍書的內容搞清楚,在中國已經就算很不錯的高手了,到那個時候再看這本《》也不遲。代碼優化部分在大學本科教學中還是一個不太重要的部分,就是算是實踐過程中,相信大家也不太運用得到。畢竟,自己做的編譯器能正確生成執行代碼已經很不錯了,還談什麼優化呢? 編譯原理的課程畢竟還只是講解原理的課程,不是專門的編譯技術課程。這兩門課程是有很大的區別的。編譯技術更關注實際的編寫編譯器過程中運用到的技術,而原理的課

Ⅱ C語言基礎的已經學了,然後也會像圖書管理系統這種程度的編程,想要更進一步,之後應該看什麼書具體

如果能時光倒流,回到過去,作為一個開發人員,你可以告訴自己在職業生涯初期應該讀一本, 你會選擇哪本書呢?我希望這個書單列表內容豐富,可以涵蓋很多東西。」
1、《代碼大全》 史蒂夫·邁克康奈爾
推薦數:1684
「優秀的編程實踐的網路全書,《代碼大全》注重個人技術,其中所有東西加起來, 就是我們本能所說的「編寫整潔的代碼」。這本書有50頁在談論代碼布局。」 —— Joel Spolsky
對於新手來說,這本書中的觀念有點高階了。到你准備閱讀此書時,你應該已經知道並實踐過書中99%的觀念。– esac
Steve McConnell的原作《代碼大全》(第1版)是公認的關於編程的最佳實踐指南之一, 在過去的十多年間,本書一直在幫助開發人員編寫更好的軟體。
現在,作者將這本經典著作全新演繹,融入了最前沿的實踐技術,加入了上百個嶄新的代碼示例, 充分展示了軟體構建的藝術性和科學性。 McConnell匯集了來自研究機構、學術界以及業界日常實踐的主要知識, 把最高效的技術和最重要的原理交織融會為這本既清晰又實用的指南。
無論您的經驗水平如何,也不管您在怎樣的開發環境中工作,也無論項目是大是小, 本書都將激發您的思維並幫助您構建高品質的代碼。
《代碼大全(第2版))》做了全面的更新,增加了很多與時俱進的內容,包括對新語言、新的開發過程與方法論的討論等等。

2、《程序員修煉之道》
推薦數:1504
對於那些已經學習過編程機制的程序員來說,這是一本卓越的書。 或許他們還是在校生,但對要自己做什麼,還感覺不是很安全。
就像草圖和架構之間的差別。雖然你在學校課堂上學到的是畫圖,你也可以畫的很漂亮, 但如果你覺得你不太知道從哪兒下手,如果某人要你獨自畫一個P2P的音樂交換網路圖,那這本書就適合你了。—— Joel
《程序員修煉之道:從小工到專家》內容簡介:《程序員修煉之道》由一系列獨立的部分組成, 涵蓋的主題從個人責任、職業發展,知道用於使代碼保持靈活、並且易於改編和復用的各種架構技術, 利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比, 全面闡釋了軟體開發的許多不同方面的最佳實踐和重大陷阱。
無論你是初學者,是有經驗的程序員,還是軟體項目經理,《程序員修煉之道:從小工到專家》都適合你閱讀。

3、《計算機程序的構造和解釋》
推薦數:916
就個人而言,這本書目前為止對我影響醉倒的一本編程書。
《代碼大全》、《重構》和《設計模式》這些經典書會教給你高效的工作習慣和交易細節。 其他像《人件集》、《計算機編程心理學》和《人月神話》這些書會深入軟體開發的心理層面。 其他書籍則處理演算法。這些書都有自己所屬的位置。
然而《計算機程序的構造和解釋》與這些不同。 這是一本會啟發你的書,它會燃起你編寫出色程序的熱情; 它還將教會你認識並欣賞美; 它會讓你有種敬畏,讓你難以抑制地渴望學習更多的東西。
其他書或許會讓你成為一位更出色的程序員,但此書將一定會讓你成為一名程序員。
同時,你將會學到其他東西,函數式編程(第三章)、惰性計算、元編程、虛擬機、解釋器和編譯器。
一些人認為此書不適合新手。 個人認為,雖然我並不完全認同要有一些編程經驗才能讀此書,但我還是一定推薦給初學者。 畢竟這本書是寫給著名的6.001,是麻省理工學院的入門編程課程。 此書或許需要多做努力(尤其你在做練習的時候,你也應當如此),但這個價是對得起這本書的。

4、《C程序設計語言》
推薦數:774
這本書簡潔易讀,會教給你三件事:C 編程語言;如何像程序員一樣思考;底層計算模型。 (這對理解「底層」非常重要)—— Nathan
《C程序設計語言》(第2版新版)講述深入淺出,配合典型例證,通俗易懂,實用性強, 適合作為大專院校計算機專業或非計算機專業的C語言教材,也可以作為從事計算機相關軟硬體開發的技術人員的參考書。
《C程序設計語言》(第2版新版)原著即為C語言的設計者之一Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan合著的 一本介紹C語言的權威經典著作。 我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。 原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標准C的基礎。
人們熟知的「hello,world」程序就是由本書首次引入的,現在,這一程序已經成為所有程序設計語言入門的第一課。

5、《演算法導論》
推薦數:671
《代碼大全》教你如何正確編程; 《人月神話》教你如何正確管理; 《設計模式》教你如何正確設計……
在我看來,代碼只是一個工具,並非精髓。 開發軟體的主要部分是創建新演算法或重新實現現有演算法。 其他部分則像重新組裝樂高磚塊或創建「管理」層。
我依然夢想這樣的工作,我的大部分時間(>50%)是在寫演算法,其他「管理」細節則留給其他人…… —— Ran Biron
經典的演算法書,被亞馬遜網,《程序員》等評選為2006年最受讀者喜愛的十大IT圖書之一。
演算法領域的標准教材,全球多所知名大學選用
MIT名師聯手鑄就,被譽為「計算機演算法的聖經」
編寫上採用了「五個一」,即一章介紹一個演算法、一種設計技術、一個應用領域和一個相關話題。

6、《重構:改善既有代碼的設計》
推薦數:617
《重構:改善既有代碼的設計》清晰地揭示了重構的過程,解釋了重構的原理和最佳實踐方式, 並給出了何時以及何地應該開始挖掘代碼以求改善。 書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術。
《重構:改善既有代碼的設計》提出的重構准則將幫助你一次一小步地修改你的代碼,從而減少了開發過程中的風險。
《重構:改善既有代碼的設計》適合軟體開發人員、項目管理人員等閱讀, 也可作為高等院校計算機及相關專業師生的參考讀物。
我想我不得不推薦《重構》:改進現有代碼的設計。—— Martin
我必須承認,我最喜歡的編程語錄是出自這本書:任何一個傻瓜都能寫出計算機能理解的程序, 而優秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler

7、《設計模式》
推薦數:617
自1995年出版以來,本書一直名列Amazon和各大書店銷售榜前列。 近10年後,本書仍是Addison-Wesley公司2003年最暢銷的圖書之一。 中文版銷售逾4萬冊。
就我而言,我認為四人幫編著的《設計模式》是一本極為有用的書。 雖然此書並不像其他建議一樣有關「元」編程,但它強調封裝諸如模式一類的優秀編程技術, 因而鼓勵其他人提出新模式和反模式(antipatterns),並運用於編程對話中。—— Chris Jester-Young

8、《人月神話》
推薦數:588
在軟體領域,很少能有像《人月神話》一樣具有深遠影響力並且暢銷不衰的著作。
Brooks博士為人們管理復雜項目提供了最具洞察力的見解。 既有很多發人深省的觀點,又有大量軟體工程的實踐。 本書內容來自Brooks博士在IBM公司System/360家族和OS/360中的項目管理經驗。
該書英文原版一經面世,即引起業內人士的強烈反響,後又譯為德、法、日、俄中等多種語言,全球銷量數百萬冊。 確立了其在行業內的經典地位。

9、《計算機程序設計藝術》
推薦數:542
《計算機程序設計藝術》系列著作對計算機領域產生了深遠的影響。 這一系列堪稱一項浩大的工程,自1962年開始編寫,計劃出版7卷,目前已經出版了4卷。
《美國科學家》雜志曾將這套書與愛因斯坦的《相對論》等書並列稱為20世紀最重要的12本物理學著作。 目前Knuth正將畢生精力投入到這部史詩性著作的撰寫中。
這是高德納傾注心血寫的一本書。—— Peter Coulton

10、《編譯原理》(龍書)
推薦數:462
我很奇怪,居然沒人提到龍書。(或許已有推薦,我沒有看到)。 我從沒忘過此書的第一版封面。 此書讓我知道了編譯器是多麼地神奇絕妙。- DB

11、《深入淺出設計模式》
推薦數:445
強大的寫作陣容。
《Head First設計模式》(中文版) 作者Eric Freeman;
ElElisabeth Freeman是作家、講師和技術顧問。
Eric擁有耶魯大學的計算機科學博士學位,E1isabath擁有耶魯大學的計算機科學碩士學位。
Kathy Sierra(javaranch.com的創始人)FHBert Bates是暢銷的HeadFirst系列書籍的創立者,也是Sun公司Java開發員認證考試的開發者。
本書的產品設計應用神經生物學、認知科學,以及學習理論,這使得這本書能夠將這些知識深深地印在你的腦海里, 不容易被遺忘。
本書的編寫方式採用引導式教學,不直接告訴你該怎麼做,而是利用故事當作引子,帶領讀者思考並想辦法解決問題。 解決問題的過程中又會產生一些新的問題,再繼續思考、繼續解決問題,這樣可以加深體會。
作者以大量的生活化故事當背景,例如第1章是鴨子,第2章是氣象站,第3章是咖啡店, 書中搭配大量的插圖(幾乎每一頁都有圖),所以閱讀起來生動有趣,不會感覺到昏昏欲睡。
作者還利用歪歪斜斜的手寫字體,增加「現場感」。 精心設計許多爆笑的對白,讓學習過程不會太枯燥。 還有模式告白節目,將設計模式擬人化成節目來賓,暢談其內在的一切。 每一章都有數目不等的測驗題。 每章最後有一頁要點整理,這也是精華所在,我都是利用這一頁做復習。
我知道四人幫的《設計模式》是一本標准書,但倒不如先看看這部大部頭,此書更為簡易。 一旦你了解了解了基本原則,可以去看四人幫的那本聖經了。- Calanus

12、《哥德爾、艾舍爾、巴赫書:集異璧之大成》
推薦數:437
如果下昂真正深入閱讀,我推薦道格拉斯·侯世達(Douglas Hofstadter)的《哥德爾、艾舍爾、巴赫書》。 他極為深入研究了程序員每日都要面對的問題:遞歸、驗證、證明和布爾代數。 這是一本很出色的讀物,難度不大,偶爾有挑戰,一旦你要鏖戰到底,將是非常值得的。 – Jonik

13、《代碼整潔之道》
推薦數:329
細節之中自有天地,整潔成就卓越代碼
盡管糟糕的代碼也能運行,但如果代碼不整潔,會使整個開發團隊泥足深陷, 寫得不好的代碼每年都要耗費難以計數的時間和資源。 然而這種情況並非無法避免。
著名軟體專家RoberfC.Marlin在《代碼整潔之道》中為你呈現出了革命性的視野。 Martin攜同ObjectMetltor公司的同事,從他們有關整潔代碼的最佳敏捷實踐中提煉出軟體技藝的價值觀, 以饗讀者,讓你成為更優秀的程序員——只要你著手研讀《代碼整潔之道》。
閱讀《代碼整潔之道》需要你做些什麼呢?你將閱讀代碼——大量代碼。 《代碼整潔之道》促使你思考代碼中何謂正確,何謂錯誤。 更重要的是,《代碼整潔之道》將促使你重新評估自己的專業價值觀,以及對自己技藝的承諾。
從《代碼整潔之道》中可以學到:
好代碼和糟糕的代碼之間的區別;
如何編寫好代碼,如何將糟糕的代碼轉化為好代碼;
如何創建好名稱、好函數、好對象和好類;
如何格式化代碼以實現其可讀性的最大化;
如何在不妨礙代碼邏輯的前提下充分實現錯誤處理;
如何進行單元測試和測試驅動開發。
雖然《代碼整潔之道》和《代碼大全》有很多共同之處,但它有更為簡潔更為實際的清晰例子。 – Craig P. Motlin

14、《Effective C++》和《More Effective C++》
推薦數:297
在我職業生涯早期,Scott Meyer的《Effective C++》和後續的《More Effective C++》都對我的編程能力有著直接影響。 正如當時的一位朋友所說,這些書縮短你培養編程技能的過程,而其他人可能要花費數年。
去年對我影響最大的一本書是《大教堂與市集》,該書教會我很有關開源開發過程如何運作,和如何處理我代碼中的Bug。 – John Channing

15、《編程珠璣》
推薦數:282
多年以來,當程序員們推選出最心愛的計算機圖書時,《編程珠璣》總是位列前列。 正如自然界里珍珠出自細沙對牡蠣的磨礪,計算機科學大師Jon Bentley以其獨有的洞察力和創造力, 從磨礪程序員的實際問題中凝結出一篇篇不朽的編程「珠璣」, 成為世界計算機界名刊《ACM通訊》歷史上最受歡迎的專欄, 最終結集為兩部不朽的計算機科學經典名著,影響和激勵著一代又一代程序員和計算機科學工作者。
本書為第一卷,主要討論計算機科學中最本質的問題:如何正確選擇和高效地實現演算法。
盡管我不得不羞愧地承認,書中一半的東西我都沒有理解,但我真的推薦《編程珠璣》,書中有些令人驚奇的東西。 – Matt Warren

16、《修改代碼的藝術》by Michael Feathers
本書是繼《重構》和《重構與模式》之後探討修改代碼技術的又一里程碑式的著作, 而且從涵蓋面和深度上都超過了前兩部經典。 書中不僅講述面向對象語言(Java、C#和C++)代碼,也有專章討論C這樣的過程式語言。
作者將理解、測試和修改代碼的原理、技術和最新工具(自動化重構工具、單元測試框架、仿對象、集成測試框架等), 與解依賴技術和大量開發和設計優秀代碼的原則、最佳實踐相結合,許多內容非常深入,而且常常發前人所未發。
書中處處體現出作者獨到的洞察力,以及多年開發和指導軟體項目所積累的豐富經驗和深厚功力。 通過這部集大成之作,你不僅能掌握最頂尖的修改代碼技術,還可以大大提高對代碼和軟體開發的領悟力。
我認為沒有任何一本書能向這本書一樣影響了我的編程觀點。 它明確地告訴你如何處理其他人的代碼,含蓄地教會你避免哪些(以及為什麼要避免)。- Wolfbyte
同意。很多開發人員討論用干凈的石板來編寫軟體。 但我想幾乎所有開發人員的某些時候是在吃其他開發人員的狗食。– Bernard Dy

17、《編碼:隱匿在計算機軟硬體背後的語言》
這是一本講述計算機工作原理的書。
不過,你千萬不要因為「工作原理」之類的字眼就武斷地認為,它是晦澀而難懂的。 作者用豐富的想像和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。 更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。 這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜於「電氣工程師」和「程序員」的理解。
不管你是計算機高手,還是對這個神奇的機器充滿敬畏之心的菜鳥, 都不妨翻閱一下《編碼:隱匿在計算機軟硬體背後的語言》,讀一讀大師的經典作品,必然會有收獲。
我推薦Charles Petzold的《編碼》。 在這個充滿工具和IDE的年代,很多復雜度已經從程序員那「抽取」走了,這本書一本開眼之作。 – hemil

18、《禪與摩托車維修藝術 / Zen and the Art of Motorcycle Maintenance》
對我影響最大的那本書是 Robert Pirsig 的《禪與摩托車維修藝術》。 不管你做什麼事,總是要力求完美,徹底了解你手中的工具和任務,更為重要的是, 要有樂趣(因為如果你做事有樂趣,一切將自發引向更好的結果)。 – akr

19、《Peopleware / 人件集:人性化的軟體開發》
Demarco 和 Lister 表明,軟體開發中的首要問題是人,並非技術。 他們的答案並不簡單,只是令人難以置信的成功。 第二版新增加了八章內容。 – Eardo Molteni

20、《Coders at Work / 編程人生》
這是一本訪談筆錄,記錄了當今最具個人魅力的15位軟體先驅的編程生涯。 包括DonaldKnuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在內的業界傳奇人物,為我們講述了 他們是怎麼學習編程的,在編程過程中發現了什麼以及他們對未來的看法, 並對諸如應該如何設計軟體等長久以來一直困擾很多程序員的問題談了自己的觀點。
一本非常有影響力的書,可以從中學到一些業界頂級人士的經驗,了解他們如何思考並工作。 – Jahanzeb Farooq

21、《Surely You』re Joking, Mr. Feynman! / 別鬧了,費曼先生!》
雖然這本書可能有點偏題,但不管你信不信,這本書曾在計算機科學專業課程的閱讀列表之上。 一個優秀的角色模型,一本有關好奇心的優秀書籍。 – mike511

22、《Effective Java 中文版》
此書第二版教你如何編寫漂亮並高效的代碼,雖然這是一本Java書,但其中有很多跨語言的理念。 – Marcio Aguiar

23、《Patterns of Enterprise Application Architecture / 企業應用架構模式》
很奇怪,還沒人推薦 Martin Fowler 的《企業應用架構模式》- levi rosol

24、《The Little Schemer》和《The Seasoned Schemer》 nmiranda
這兩本是LISP的英文書,尚無中文版。 美國東北大學網站上也有電子版。

25、《交互設計之路》英文名:《The Inmates Are Running The Asylum: Why High Tech Procts Drive Us Crazy and How to Restore the Sanity》該書作者:Alan Cooper,人稱Visual Basic之父,交互設計之父。
本書是基於眾多商務案例,講述如何創建更好的、高客戶忠誠度的軟體產品和基於軟體的高科技產品的書。 本書列舉了很多真實可信的實際例子,說明目前在軟體產品和基於軟體的高科技產品中,普遍存在著「難用」的問題。
作者認為,「難用」問題是由這些產品中存在著的高度「認知摩擦」引起的, 而產生這個問題的根源在於現今軟體開發過程中欠缺了一個為用戶利益著想的前期「交互設計」階段。 「難用」的產品不僅損害了用戶的利益,最終也將導致企業的失敗。
本書通過一些生動的實例,讓人信服地講述了由作者倡導的「目標導向」交互設計方法在解決「難用」問題方面的有效性, 證實了只有改變現有觀念,才能有效地在開發過程中引入交互設計,將產品的設計引向成功。
本書雖然是一本面向商務人員而編寫的書,但也適合於所有參與軟體產品和基於軟體的高科技產品開發的專業人士, 以及關心軟體行業和高科技行業現狀與發展的人士閱讀。
他還有另一本中文版著作:《About Face 3 交互設計精髓》

26、《Why』s (Poignant) Guide to Ruby 》
如果你不是程序員,閱讀此書可能會很有趣,但如果你已經是個程序員,可能會有點乏味。

27、《Unix編程藝術》
It is useful regardless operating system you use. – J.F. Sebastian
不管你使用什麼操作系統,這本書都很有用。 – J.F. Sebastian

28、《高效程序員的45個習慣:敏捷開發修煉之道》
45個習慣,分為7個方面:工作態度、學習、軟體交付、反饋、編碼、調試和協作。
每一個具體的習慣里,一開始提出一個謬論,然後展開分析,之後有正隊性地提出正確的做法,並設身處地地講出了正確做法給你個人的「切身感受」,最後列出幾條注意事項,幫助你修正自己的做法(「平衡的藝術」)。

29、《測試驅動開發》
前面已經提到的很多書都啟發了我,並影響了我,但這本書每位程序員都應該讀。 它向我展示了單元測試和TDD的重要性,並讓我很快上手。 – Curro
我不關心你的代碼有多好或優雅。 如果你沒有測試,你或許就如同沒有編寫代碼。 這本書得到的推薦數應該更高些。 人們討論編寫用戶喜歡的軟體,或既設計出色並健壯的高效代碼,但如果你的軟體有一堆bug,談論那些東西毫無意義。– Adam Gent

30、《點石成金:訪客至上的網頁設計秘笈》
可用性設計是Web設計中最重要也是難度最大的一項任務。 《點石成金-訪客至上的網頁設計秘笈(原書第二版)》作者根據多年從業的經驗,剖析用戶的心理, 在用戶使用的模式、為掃描進行設計、導航設計、主頁布局、可用性測試等方面提出了許多獨特的觀點, 並給出了大量簡單、易行的可用性設計的建議。
本書短小精煉,語言輕松詼諧,書中穿插大量色彩豐富的屏幕截圖、趣味叢生的卡通插圖以及包含大量信息的圖表, 使枯燥的設計原理變得平易近人。
本書適合從事Web設計和Web開發的技術人員閱讀,特別適合為如何留住訪問者而苦惱的網站/網頁設計人員閱讀。 這是一本關於Web設計原則而不是Web設計技術的書。
本書作者是Web設計專家,具有豐富的實踐經驗。 他用幽默的語言為你揭示Web設計中重要但卻容易被忽視的問題,只需幾個小時, 你便能對照書中講授的設計原則找到網站設計的症結所在,令你的網站煥然一新。

Ⅲ 求C++ 網路編程最好的書籍 謝謝了

學習編程基礎也很重要的,路要一步一步地走。不要老是想到看一本書就成為高手。我給你推薦一些書吧,你可以選一些看。其中很多都是經典之作。C++是以C為基礎的,所以你最好看一下C語言,網路方面,《計算機網路》和《TCP/IP詳解》是必看的。望採納。
1、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------Thomas H. Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------Kenneth H.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
2、數據結構
數據結構 C++
數據結構演算法與應用
3、C語言
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---Brian W.Kernighan「C語言之父」
C Primer Plus中文版(第五版)--------C語言「倚天屠龍雙劍」---Stephen Prata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERT SCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVID R.HANSON
C語言參考手冊(原書第5版)--------------------------Samuel P.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------Andrew Koenig
5、C++
C++程序設計語言(特別版)---c++八大金剛----Bjarne Stroustrup「C++之父」
C++ Primer (第3版)中文版----c++八大金剛---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金剛---Stanley B.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--Nicolai M.Josuttis
C++語言的設計和演化-----c++八大金剛----Bjarne Stroustrup「C++之父」
深度探索C++對象模型---c++八大金剛----Stanley B.Lippman
Essential C++中文版---c++八大金剛---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金剛------Scott Meyers
More Effective C++中文版----c++八大金剛------Scott Meyers
C++編程思想(第2版) 第1卷:標准C++導引--------Bruce Eckel
C++編程思想(第2版)第2卷:實用編程技術 --------Bruce Eckel
C++程序設計--------------------------譚浩強
C++ 程序設計教程(第2版)--------------錢能
C++ Primer Plus(第五版)中文版---Stephen Prata

6、操作系統
深入理解計算機系統(修訂版)-------RANDAL E.BRYANT
計算機操作系統(第六版)
7、編譯原理
跟我一起寫makefile
《編譯原理技術和工具》------- Alfred ------- 龍書
《現代編譯原理-C語言描述》 ----------- Andrew W. Appel ----------- 虎書
《高級編譯器設計與實現》 ----------- Steven S.Muchnick ----------- 鯨書
8、網路
計算機網路第四版中文版-----------Andrew S.Tanenbaum -------網路編程三劍客
TCP/IP詳解3卷本--------------------Richard Stevens----網路編程三劍客
UNIX網路編程2卷本--------------------Richard Stevens----網路編程三劍客
用TCP/IP進行網際互聯-----------Douglas E. Comer
高級TCP/IP編程-------------------Jon C. Snader
C++網路編程-----------------------Douglas Schmidt
UNIX環境高級編程(第2版)--------------------Richard Stevens
9、Linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程

Ⅳ 關於網路發展、html5、css有沒有什麼入門叢書推薦

這個列表包括了 100多本經典技術書籍,涵蓋:計算機系統與網路、系統架構、演算法與數據結構、前端開發、後端開發、移動開發、資料庫、測試、項目與團隊、程序員職業修煉、求職面試 和 編程相關的經典書籍。

計算機系統與網路

  • 《圖靈的秘密:他的生平、思想及論文解讀》

  • 《計算機系統概論》

  • 《深入理解Linux內核》

  • 《深入Linux內核架構》

  • 《TCP/IP詳解 卷1:協議》

  • 《Linux系統編程(第2版)》

  • 《Linux內核設計與實現(第3版)》

  • 《深入理解計算機系統(原書第2版)》

  • 《計算機程序的構造和解釋(原書第2版)》

  • 《編碼:隱匿在計算機軟硬體背後的語言》

  • 《性能之顛:洞悉系統、企業與雲計算》

  • 《UNIX網路編程 卷1:套接字聯網API(第3版)》

  • 《UNIX網路編程 卷2:進程間通信》

  • 《Windows核心編程(第5版)》

  • 《WireShark網路分析就這么簡單》

  • 《WireShark網路分析的藝術》

  • 編程通用

  • 《編程原本》

  • 《代碼大全》

  • 《UNIX編程藝術》

  • 《代碼整潔之道》

  • 《編程珠璣(第2版)》

  • 《編程珠璣(續)》

  • 《軟體調試的藝術》

  • 《編程語言實現模式》

  • 《編寫可讀代碼的藝術》

  • 《精通正則表達式(第3版)》

  • 《編譯原理(第2版)》龍書

  • 《重構:改善既有代碼的設計》

  • 《七周七語言:理解多種編程范型》

  • 《調試九法:軟硬體錯誤的排查之道》

  • 《計算的本質:深入剖析程序和計算機》

  • 《設計模式 : 可復用面向對象軟體的基礎》

  • 演算法與數據結構

  • 《演算法(第4版)》

  • 《演算法導論(原書第2版)》

  • 《Python演算法教程》

  • 《演算法設計與分析基礎(第3版)》

  • 《學習 JavaScript 數據結構與演算法》

  • 《數據結構與演算法分析 : C++描述(第4版)》

  • 《數據結構與演算法分析 : C語言描述(第2版)》

  • 《數據結構與演算法分析 : Java語言描述(第2版)》

  • 職業修煉與規劃

  • 《大教堂與集市》

  • 《程序員的職業素養》

  • 《程序員修煉之道:從小工到專家》

  • 《軟體開發者路線圖:從學徒到高手》

  • 《我編程,我快樂: 程序員職業規劃之道》

  • 《程序員的思維修煉:開發認知潛能的九堂課》

  • 《高效程序員的45個習慣:敏捷開發修煉之道(修訂版)》

  • 大師訪談

  • 《編程大師智慧》

  • 《編程大師訪談錄》

  • 《編程人生 : 15位軟體先驅訪談錄(上卷)》

  • 《編程人生 : 15位軟體先驅訪談錄( 下卷)》

  • 《奇思妙想 : 15位計算機天才及其重大發現》

  • 《圖靈和ACM圖靈獎》

  • 架構/性能

  • 《微服務設計》

  • 《大數據日知錄》

  • 《企業應用架構模式》

  • 《Web性能權威指南》

  • 《SRE:Google運維解密》

  • 《發布!軟體的設計與部署》

  • 《高擴展性網站的 50 條原則》

  • 《大型網站技術架構:核心原理與案例分析》

  • 《恰如其分的軟體架構:風險驅動的設計方法》

  • 《軟體系統架構:使用視點和視角與利益相關者合作(第2版)》

  • Web前端

  • 《高性能 JavaScript》

  • 《鋒利的 jQuery(第2版)》

  • 《JavaScript 忍者秘籍》

  • 《編寫可維護的 JavaScript》

  • 《你不知道的 JavaScript(上卷)》

  • 《你不知道的 JavaScript(中卷)》

  • 《JavaScript 權威指南(第6版)》

  • 《JavaScript 語言精粹(修訂版)》

  • 《JavaScript DOM編程藝術 (第2版)》

  • 《JavaScript 高級程序設計(第3版)》

  • 《JavaScript 非同步編程:設計快速響應的網路應用》

  • 《Effective JavaScript:編寫高質量JavaScript代碼的68個有效方法》

  • 《HTML5 權威指南》

  • 《HTML5 秘籍(第2版)》

  • 《HTML5 與 CSS3 基礎教程(第八版)》

  • 《CSS 揭秘》

  • 《CSS 設計指南(第3版)》

  • 《CSS 權威指南(第3版)》

  • Java開發

  • 《Java8 實戰》

  • 《Java並發編程實戰》

  • 《Java性能權威指南》

  • 《Java程序員修煉之道》

  • 《實戰Java高並發程序設計》

  • 《Java編程思想 (第4版)》

  • 《深入理解Java虛擬機(第2版)》

  • 《Effective java 中文版(第2版)》

  • 《Java核心技術·卷1:基礎知識(原書第9版)》

  • 《Java核心技術·卷2:高級特性(原書第9版)》

  • .NET

  • 《精通C#(第6版)》

  • 《深入理解C#(第3版)》

  • 《CLR via C#(第4版)》

  • Python

  • 《集體智慧編程》

  • 《笨辦法學Python》

  • 《Python基礎教程》

  • 《Head First Python》

  • 《與孩子一起學編程》

  • 《Python學習手冊(第4版)》

  • 《Python Cookbook(第3版)》

  • 《Python參考手冊(第4版)》

  • 《Python核心編程(第3版)》

  • 《Python科學計算(第2版)》

  • 《利用 Python 進行數據分析》

  • 《Think Python:像計算機科學家一樣思考Python(第2版)》

  • 《Python編程實戰:運用設計模式、並發和程序庫創建高質量程序》

  • 《Python絕技:運用Python成為頂級黑客》

  • 《Flask Web開發:基於Python的Web應用開發實戰》

  • Android

  • 《Android編程權威指南(第2版)》

  • 《移動應用UI設計模式(第2版)》

  • iOS

  • 《iOS編程實戰》

  • 《iOS編程(第4版)》

  • 《Objective-C高級編程》

  • 《Effective Objective-C 2.0:編寫高質量iOS與OS X代碼的52個有效方法》

  • PHP

  • 《Head First PHP & MySQL(中文版)》

  • 《深入PHP:面向對象、模式與實踐(第3版)》

  • C語言

  • 《C和指針》

  • 《C專家編程》

  • 《C陷阱與缺陷》

  • 《C語言介面與實現》

  • 《C程序設計語言(第2版)》

  • C++

  • 《C++標准庫》

  • 《C++編程思想》

  • 《C++程序設計原理與實踐》

  • 《C++ Primer (中文第5版)》

  • 《C++ Primer習題集(第5版)》

  • 《C++程序設計語言(第1-3部分)(原書第4版)》

  • 《Effective C++:改善程序與設計的55個具體做法(第3版)(中文版)》

  • 《More Effective C++:35個改善編程與設計的有效方法(中文版)》

  • 機器學習和數據挖掘

  • 《數據之巔》

  • 《矩陣分析》

  • 《機器學習》

  • 《統計學習方法》

  • 《機器學習導論》

  • 《推薦系統實踐》

  • 《機器學習實戰》

  • 《Web數據挖掘》

  • 《深入淺出統計學》

  • 《模式分類(第2版)》

  • 《概率論與數理統計》

  • 《統計學習基礎(第2版)》

  • 《數據挖掘:概念與技術(第3版)》

  • 《數據挖掘:實用機器學習工具與技術(原書第3版)》

  • 《大數據:互聯網大規模數據挖掘與分布式處理(第2版)》

  • 資料庫

  • 《SQL應用重構》

  • 《SQL Cookbook》

  • 《高性能MySQL (第3版)》

  • 《MySQL技術內幕 : InnoDB存儲引擎(第2版)》

  • 《深入淺出MySQL : 資料庫開發、優化與管理維護》

  • 測試

  • 《探索式軟體測試》

  • 《有效的單元測試》

  • 《Google軟體測試之道》

  • 項目與團隊

  • 《人月神話》

  • 《快速軟體開發》

  • 《人件(原書第3版)》

  • 《門後的秘密:卓越管理的故事》

  • 《極客與團隊:軟體工程師的團隊生存秘笈》

  • 求職面試

  • 《程序員面試金典(第5版)》

  • 《編程之美 : 微軟技術面試心得》

  • 《金領簡歷:敲開蘋果、微軟、谷歌的大門》

  • 《劍指Offer:名企面試官精講典型編程題(紀念版)》

  • 編程之外

  • 《暗時間》

  • 《數學之美》

  • 《精益創業》

  • 《批判性思維》

  • 《世界是數字的》

  • 《程序員的數學》

  • 《程序員健康指南》

  • 《禪與摩托車維修藝術》

  • 《關鍵對話:如何高效能溝通》

  • 《寫作法寶:非虛構寫作指南》

  • 《黑客與畫家 : 來自計算機時代的高見》

  • 《軟體隨想錄(卷1)》《軟體隨想錄(卷2)》

  • 《如何把事情做到最好》

  • 大家有什麼好書推薦歡迎在評論中留言。

    註:本文轉自伯樂在線。

Ⅳ 編譯原理第三版清華大學

「編譯原理」是計算機專業非常重要的一門專業課,在計算機教學中有著舉足輕重的地位。

編譯原理中編譯系統是整個計算機系統中極其重要的系統軟體,它的作用是把計算機高級語言最終翻譯成等價的計算機指令,從而保證高級程序設計語言順利運行。所以,「編譯原理」是計算機科學中基本研究內容之一。

編譯器:編譯器是計算機程序中應用比較多的工具,在對編譯器進行前端設計時,一定要充分考慮影響因素,還要對詞法、語法、語義進行分析。

過程分析:將高級程序設吾言,如C、C++、Java等,翻譯成計算機可以執行的機器指令代碼流的過程,即是編譯的過程。編譯過程一般分為6個步驟,即詞法分析、語法分析、語義分析、中間代碼生成、中間代碼優化、目標代碼生成。

Ⅵ 誰能介紹一下計算機科學與技術專業

計算機科學與技術專業課程不完全解析
1.計算機導論:
計算機科學的基礎課程之一,其教學目的是概要性地對專業課程作介紹,是典型的面向專業新生的課程(即CS0型課程)。認真學習該課程有助於今後的學習,然而這門課程往往容易被新生們忽略……
(推薦教材:可使用學校配發的教材,但建議使用外版翻譯教材。)

2.高級語言程序設計:
計算機科學的基礎課程之一,教學目的是讓本專業同學實際掌握一門程序設計語言並且習得一些程序設計的基本技能,目前的教學語言是C語言。個人認為課程名稱可改為「高級程序設計語言」,因為課程對語言的強調遠勝於對程序設計本質的講解。建議在學習這門課程時配以《程序設計實踐》一書,效果甚佳。
(推薦教材:
①《從問題到程序——程序設計與C語言引論》 機械工業出版社
②《程序設計實踐》 機械工業出版社
③《程序設計語言——實踐之路》 電子工業出版社 )

3.離散數學:
計算機科學基礎課程之一,被譽為計算機科學的數學基礎。其內容博大精深,從中派生出的圖論(圖演算法)、數理邏輯、組合數學以及泛代數等多門專業課程是現代計算機科學和應用數學的主要研究領域。能否學好離散數學對進一步學習以後的專業課程有著非同一般的影響。
(推薦教材及參考書:
①《離散數學》(第四版) 清華大學出版社
②《離散數學導學》機械工業出版社
③《現代應用數學手冊:離散數學卷》清華大學出版社 )

4.電路與電子技術:
電子產業有「朝陽產業」的美譽,被認為是信息時代的工業。這門電子與電路技術可謂是對電子學領域學習的敲門磚。雖然課程本身對計算機科學專業今後的學習影響不大,但掌握這項技能對於學生本身專業素養地提高是大有裨益的。同時,學習這門課程也能為今後學習數字邏輯和微機原理等系統底層方面的課程打好基礎。
(推薦教材:《電子學基礎:電路和元器件》(第四版)清華大學出版社)

5.面向對象程序設計:
如果說上世紀軟體開發領域最偉大的突破是什麼,面向對象程序設計(OOP)必為其中之一。目前主流的程序設計語言,如C++、Java、Python和Delphi等,幾乎清一色支持面向對象。可以說,掌握的面向對象的精髓,便是掌握了我們這個行業的入門鑰匙。我校此課程的教學語言採用的是C++,而就國內C++教學的糟糕現狀來看,若想完整掌握面向對象思想,學生自己不努力是不行的。
(推薦教材及參考書:
①《C++ Primer中文版》(第四版) 人民郵電出版社
②《Essential C++ 中文版》華中科技大學出版社
③《Effective C++ 中文版》(第三版)電子工業出版社
④《Accelerated C++(影印版)》機械工業出版社
⑤《C++語言的設計與演化》機械工業出版社 )

6.數字邏輯:
計算機科學核心課程之一。計算機科學中有一個研究領域即系統設計領域,而本門課程即為這一領域研究的基礎。正確認識與掌握數字邏輯及其設計,可以使那些有志於系統底層開發的學生獲益匪淺。
(推薦教材:
①《數字基礎(第八版)》清華大學出版社
②《邏輯與計算機設計基礎》 中國電力出版社 )
7.數據結構:
計算機科學核心課程之一。對數據地有效組織是程序的主要任務之一,演算法的主要操作對象亦為數據結構。從簡單的數組和鏈表,到各色高級的抽象數據類型(ADT),數據結構在程序設計中的地位不言而喻。學好數據結構,是進一步學習專業課的基本前提。可以這么說,一個不懂得如何組織和操控數據的學生,根本就不配當我們計算機科學專業的學生,更不配當一名程序員!!!
(推薦教材:
①《C演算法 第一卷(第三版)》人民郵電出版社
②《程序設計抽象思想——C語言描述》清華大學出版社
③《數據抽象與問題求解——C++語言描述(第四版)》清華大學出版社
④《數據結構與演算法——Java語言描述》機械工業出版社 )

8.計算方法:內容不詳,不敢妄作斷言。 (推薦教材:待定)
// 轉帖者:線性代數、微積分、微分方程等的計算機演算法

9.計算機原理與匯編:
系統底層課程之一,亦為計算機科學核心課程。重點講述計算機(微機)構造以及低級語言——匯編語言的基礎知識。學習這門課程,對進一步學習編譯原理等專業高級課程有很大幫助。
(推薦教材:
①《深入理解計算機系統》中國電力出版社
②《Intel匯編語言程序設計(影印版)》清華大學出版社
③《Windows環境下32位匯編語言程序設計(第二版)》電子工業出版社
④《匯編語言編程藝術》清華大學出版社 )

10.操作系統:
計算機科學的核心課程之一。課程全面講述了操作系統的原理與構造,各類上機實驗更能讓學生對操作系統有深刻地理解。
(推薦教材:
①《操作系統(第三版)》機械工業出版社
②《現代操作系統(第二版)》機械工業出版社
③《Linux內核設計與實現(影印版)》機械工業出版社
④《UNIX系統編程》機械工業出版社
⑤《UNIX環境高級編程(第二版)》人民郵電出版社 )

11.軟體工程:
計算機科學的核心課程之一。近年來,隨著軟體開發革命地進一步深化,批判軟體工程及過程方法改進的著作日益豐富,我們也得以從不良的軟體開放中解放。建議在學習本課程時,聯系自己的實戰,並閱讀批判軟體工程和改良軟體工程的著作。
(推薦教材及參考書:
①《軟體工程:實踐者的研究方法(第五版)》機械工業出版社
②《程序設計心理學(銀年紀念版)》清華大學出版社
③《人月神話(銀年紀念版)》清華大學出版社
④《人件》清華大學出版社 )

12.資料庫原理及應用:
計算機科學與信息學科的好像課程之一。課程講述了資料庫原理以及設計等方面的內容。對於那些注重實效的學生而言,學好這門課程,可以使今後的工作更為輕松。
(推薦教材:《資料庫系統概念(第四版)》機械工業出版社)

13.運籌學及其演算法:
此課程課作為計算機科學的輔助課程,向學生介紹了運籌學方面的演算法,此類演算法屬於現代演算法范疇,本人暫時還未涉獵,故恕難對此課程解析之…… (推薦教材:待定)
// 轉帖者:線性規劃、動態規劃、排隊論、決策分析等等

14.計算機網路:
計算機科學的核心課程之一。課程詳細地介紹了計算機網路的發展、組成和協議方面的內容。對於自我要求較高的同學而言,學好這門課程義不容辭!
(推薦教材:
①《計算機網路(第四版)》清華大學出版社
②《TCP/IP協議族》清華大學出版社 )

15.軟體開發管理:
應該是軟體工程課的附屬課程吧,不詳。 (推薦教材:待定)
// 轉帖者:對於工程,管理重於技術

16.數學建模:
可以說是本專業的相關課程,但其意義及作用目前在下還不甚了解。 (推薦教材:待定)
// 轉帖者:既然學了數學,會用也很重要吧

17.J2EE體系結構:
J2EE是目前我們產業的兩大工業平台之一,學習這門課程,可以為今後涉足企業級開發領域打下基礎。但請注意,J2EE和Java語言本身都是在不斷演進的,因而如果不能在課程結束後持續學習相關技術,恐怕還不等你出大學校門,這門課的內容就已經過時了…… (推薦教材:最新的國外相關教材。)

18.計算機圖形學:
計算機科學的核心課程之一。有關計算機圖形學在各個領域的應用不必在下一一說明了吧。無論是游戲開發,還是航空航天等前沿領域,到處都有計算機圖形學的技術被應用。目前該課程主要用C語言和OpenGL圖形庫進行教學,效果應該還算不錯。
(推薦教材及參考書:
①《計算機圖形學原理與實踐-C語言描述(第二版)》機械工業出版社
②《互動式計算機圖形學——基於OpenGL的自頂向下的方法(第四版)》清華大學出版社
③《OpenGL超級寶典(第三版)》 人民郵電出版社 )

19.微型計算機技術:
計算機專業的核心課程之一。課程詳細地分析了微型計算機(主要是單片機)技術,由於這方面資料奇缺,這門課程可不太受在下歡迎…… (推薦教材:待定)
// 轉帖者:想搞嵌入式的要注意了

20.編譯原理:
計算機科學核心課程之一。如果想要寫出好的程序,編譯原理的相關知識必不可少,因而這門課程是十分重點的一門課程。課程教材「龍書」、「虎書」和「鯨書」更是我們專業的經典著作。
(推薦教材:
①《編譯原理》機械工業出版社
②《現代編譯原理——C語言描述》人民郵電出版社
③《高級編譯器設計與實現》機械工業出版社 )

21.Web系統開發:
目前主流的web開發主要集中在ASP.NET和JSP開發領域 ,當然,還有近來火爆異常的Ajax,以前的CGI和ASP已經不那麼流行了。與J2EE一樣,這是一門必須持續學習的課程,否則,你必將被其所拋棄! (推薦教材:最新國外相關書籍。)

22.嵌入式軟體開發:
這個領域可謂是軟體開發的前沿領域,也是未來軟體業霸主的孕育地之一(另兩個領域為Web開發和企業級開發)。目前的軟體開發領域正蘊含著「泛嵌入式」的潛規則(《程序員》2006年7月刊)。認真並持續學習這門課程,對將來的工作會有莫大的幫助。 (推薦教材:《嵌入式系統開放大全》人民郵電出版社)

23.演算法設計與分析:
計算機科學的核心課程之一。「程序是衣,演算法為魂」(《程序員》2006年3月刊),這門課程是本專業學生所亟需掌握的,如果學不好這門課,那麼,你就不是一名優秀的程序員!
(推薦教材:
①《數據結構與演算法分析-C語言描述》機械工業出版社
②《C演算法 第一卷 (第三版)》人民郵電出版社 )

24.情報檢索與利用:這門課我可沒涉獵過…… (推薦教材:待定)

以上純系復制,完全為了幫你!!!!

Ⅶ 學習編譯原理哪本書好

我們學校用的是《編譯原理》與《編譯原理與實踐》這兩本書,這兩本書都是國外的教材。我覺得《編譯原理與實踐》這本書不錯,自學應該能看懂,而且代碼比較多,書最後還有整個小型編譯器的源代碼。
編譯不好學,你就慢慢學吧。

下面的資料請作參考:

當代編譯技術三大聖經級別的教材

1.龍書(Dragon book)
書名是Compilers: Principles,Techniques,and Tools
作者是:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman

內容簡介
《編譯原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的計算機 科學家,他們在計算機科學理論、資料庫等很多領域都做出了傑出貢獻。《編譯原理》 是編譯領域無可替代的經典著作,被廣大計算機專業人士譽為「龍書」。《編譯原理》一 直被世界各地的著名高等院校和科研機構(如貝爾實驗室、哥倫比亞大學、普 林斯頓大學和斯坦福大學等)廣泛用作本科生和研究生編譯原理與技術課程的 教材,《編譯原理》對我國計算機教育界也具有重大影響。 書中深入討論了編譯器設計的重要主題,包括詞法分析、語法分析、語法制 導分析、類型檢查、運行環境、中間代碼生成、代碼生成、代碼優化等,並在 最後兩章中討論了實現編譯器的一些編程問題和幾個編譯器實例,而且每章都 提供了大量的練習和參考文獻。

與上一版相比,《編譯原理》第二版進行了全面的修訂,涵蓋了編譯器開發方面的最新進展。每章中都提供了大量的系統及參考文獻。《編譯原理》是編譯原理課程方面的經典教材,內容豐富,適合作為高等院校計算機及相關專業本科生及研究生的編譯原理課程的教材,也是廣大技術人員的極佳參考讀物。

作者簡介
Alfred V.Aho,美國歌倫比亞大學教授,美國國家工程院院士,ACM和IEEE會士,曾獲得IEEE的馮·諾伊曼獎。著有多部演算法、數據結構、編譯器、資料庫系統及計算機科學基礎方面的著作。
Monica S.Lam,斯坦福大學計算機科學系教授,曾任Tensilica的首席科學家,也是Moka5的首任CEO。曾經主持SUIF項目,該項目產生了最流行的研究用編譯器之一。
Ravi Sethi,Avaya實驗室總裁,曾任貝爾實驗室高級副總裁TLucent Technologies通信軟體的CTO。他曾在賓夕法尼亞州立大學、亞利桑那州立大學和普林斯頓大學任教,是ACM會士。
Jeffrey D.Ullman斯坦福大學計算機科學系教授和Gradiance CEO,他的研究興趣包括資料庫理論、資料庫集成、數據挖掘和利用信息基礎設施教學等。他是美國國家工程院院士、IEEE會士,獲得過ACM的KarIstrom傑出教育家獎和Knuth獎。
第一版中文版
第二版中文版

2.鯨書(Whale book)
書名是:Advanced Compiler Design and Implementation
作者是:Steven S.Muchnick

內容簡介
本書迎接現代語言和體系結構的挑戰,幫助讀者作好准備,去應對將來要遇到的編譯器設計的問題。
本書涵蓋現代微處理器編譯器的設計和實現方面的所有高級主題。本書從編譯設計基礎領域中的高級問題開始,廣泛而深入地闡述各種重要的代碼優化技術,分析各種優化之間的相對重要關系,以及實現這些優化的最有效方法。
本書特點
●為理解高級編譯器設計的主要問題奠定了基礎
●深入闡述優化問題
●用Sun的SPARC、IBM的POWER和PowerPC、DEC的Alpha以及Intel的Pentium和相關商業編譯 器作為案例,說明編譯器結構、中間代碼設計和各種優化方法
●給出大量定義清晰的關於代碼生成、優化和其他問題的演算法
●介紹由作者設計的以清晰、簡潔的方式描述演算法的語言ICAN (非形式編譯演算法表示)。

本書是經典的編譯器著作,與「龍書」齊名,稱為鯨書。書中針對現代語言和體系結構全面介紹了編譯器設計與實現的高級論題,從編譯器的基礎領域中的高級問題開始,然後深入討論了各種重要的代碼優化。本書專為編譯器專業人士和計算機專業本科生,研究生編寫,在設計和實現高度優化的編譯器以及確定優化的重要性和實現優化的最有效的方法等方面,為讀者提供了非常有價值的指導。

作者簡介
Steven S.Muchnick,曾是計算機科學教授,後作為惠普的PA-RISC和SUN的SPARC兩種計算機體系結構的核心開發成員,將自己的知識和經驗應用於編譯器設計,並擔任這些系統的高級編譯器設計與實現小組的領導人。他在研究和開發方面的雙重經驗,對於指導讀者作出編譯器設計決策極具價值。

3.虎書(Tiger book)
書名是:Modern Compiler Implementation in C /Java /ML,Second Edition
作者是:Andrew W.Appel,with Jens Palsberg

內容簡介
《現代編譯原理——C語言描述(英文版)/圖靈原版計算機科學系列》全面講述了現代編譯器的各個組成部分,包括:詞法分析、語法分析、抽象語法、語義檢查、中間代碼表示、指令選擇、數據流分析、寄存器分配以及運行時系統等。與大多數編譯原理的教材不同,《現代編譯原理——C語言描述(英文版)/圖靈原版計算機科學系列》採用了函數語言和面向對象語言來描述代碼生成和寄存器分配,對於編譯器中各個模塊之間的介面都給出了實際的 C 語言頭文件。 全書分成兩部分,第一部分是編譯的基礎知識,適用於第一門編譯原理課程(一個學期);第二部分是高級主題,包括面向對象語言和函數語言、垃圾收集、循環優化、 SSA(靜態單賦值)形式、循環調度、存儲結構優化等。
本書是一本著名的編譯原理課程的教材。國際上眾多名校均採用本書作為編譯原理課程的教材,包括美國麻省理工學院、加州大學伯克利分校、普林斯頓大學和英國劍橋大學等。本書在國外享有「虎書」的稱號,與有「龍書」之稱的《編譯原理》(Alfred Aho 等編著)齊名。與編譯原理方面的其他名著相比,本書出版時間晚,內容新。 書中專門為學生提供了一個用 C 語言編寫的實習項目,包括前端和後端設計,學生可以在一學期內創建一個功能完整的編譯器。

作者簡介
Andrew W.Appel,美國普林斯頓大學計算機科學系教授,第26屆ACM SIGPLAN-SIGACT程序設計原理年會大會執行主席,1998-1999年在貝爾實驗室做研究工作。主要研究方向是計算機安全、編譯器設計、程序設計語言等。

Ⅷ 自學計算機編程應該看些什麼書

一:第一階段
C語言-------《C語言設計》 作者:譚浩強
大多數人都推薦譚浩強這本書,譚浩強的C語言程序設計,我覺得更適合當教科書,主要是篇幅沒有那麼大,書本的內容不是很全,由老師帶入門是最好的。

《C Primer Plus》第五版 作者:Stephen Prata
這本書比較厚,內容也比較基礎,擴展的也比較廣,自學容易上手,唯一的缺陷在於它是外國人編寫,而國內的翻譯往往讓人難以滿意,如果你有較好的英語水平,最好閱讀英文版的。

《C語言入門經典》第四版 作者:Ivor Horton

二:第二階段
這一階段看個人主攻的方向了,安卓一般就JAVA,PC游戲、軟體C++,也有推薦C#,這些都是主流語言,其他語言要看個人愛好與發展。
面向對象的語言,一般懂一門,之後要轉其他語言也很容易的,其實思想都差不多,主要的不同在於語法。C#容易上手,一個月入門,一年精通,而C++卻有點難,一年入門,二十年也未必敢說自己精通。如果有時間,可以了解一下匯編語言。

C++ Primer, 4rd Edition

(入門類:
C++ Primer, 4rd Edition
Thinking in C++, 2nd Edition
The C++ Standard Library: A Tutorial and Reference

進階類:
The C++ Programming Language, Special Edition
The Design and Evolution of C++
Inside C++ Object Model
C++ Templates: The Complete Guide
STL 源碼剖析
Generic Programming and the STL
Modern C++ Design: Generic Programming and Design Patterns Applied

應用技巧類:
Effective C++, 2nd Editon
More Effective C++
Exceptional C++
More Exceptional C++
Effective STL
Ruminations on C++)

三:第三階段
API/SDK------------- 《windows程序設計》(Jeff Prosise)
這書主要是開發Windows軟體要深入研讀的,畢竟是WindowsAPI。如果是主攻C++,那麼這本書你可以大概略讀一遍,不用過多的深入追究,QT才是C++主要深入思慮的關鍵。

四:第四階段
MFC----《VC++技術內幕》、《深入淺出MFC》及視頻教程孫鑫 VC++6.0
如果是C++,QT是要重點學習的對象。

五:第五階段
COM/DCOM/ATL/COM+---------《COM技術內幕》

未知階段:
《數據結構》,《演算法導論》這些基本是編程的核心了,編程的很大情況都依賴於演算法的實現,這個兩門基本要深入研究,這是決定編程能力的核心標准。

如果不弄底層的話,《操作系統原理》可以簡單地了解。

熱點內容
解壓污游戲 發布:2025-04-01 17:45:04 瀏覽:938
python比較時間大小 發布:2025-04-01 17:43:39 瀏覽:711
安卓怎麼激活境外流量 發布:2025-04-01 17:16:17 瀏覽:805
逃跑吧少年逃跑號密碼在哪裡看 發布:2025-04-01 17:14:50 瀏覽:258
甲骨文編程 發布:2025-04-01 17:00:46 瀏覽:733
視頻彈幕能緩存嗎 發布:2025-04-01 16:42:30 瀏覽:526
javasql修改 發布:2025-04-01 16:19:22 瀏覽:805
聯通q5業務密碼多少 發布:2025-04-01 16:19:12 瀏覽:898
自然界密碼是多少 發布:2025-04-01 16:09:25 瀏覽:77
雲伺服器安全威脅 發布:2025-04-01 16:01:02 瀏覽:294