❶ 編譯原理這門課程第七章代碼生成的知識點有哪些
編譯原理這門課第七章代碼生成的知識點包含章節導引,第一節代碼生成器的設計中的問題,第二節目標機器,第三節基本塊和流圖,第四節一個簡單的代碼生成器,課後練習,。
❷ 有沒有比龍書通俗易懂的編譯原理書籍
大學課程為什麼要開設編譯原理呢?這門課程關注的是編譯器方面的產生原理和技術問題,似乎和計算機的基礎領域不沾邊,可是編譯原理卻一直作為大學本科的必修課程,同時也成為了研究生入學考試的必考內容。編譯原理及技術從本質上來講就是一個演算法問題而已,當然由於這個問題十分復雜,其解決演算法也相對復雜。我們學的數據結構與演算法分析也是講演算法的,不過講的基礎演算法,換句話說講的是演算法導論,而編譯原理這門課程講的就是比較專註解決一種的演算法了。在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)都作了十分詳細的說明。這些東西都是我們編寫平常程序的時候經常要做的事情,但是我們卻少去探求其內部是如何完成。
關於中間代碼生成,代碼生成,代碼優化部分的內容就實在不好說了。國內很多教材到了這部分都會很簡單地走馬觀花講過去,學生聽了也只是作為了解,不知道如何運用。不過這部分內容的東西如果要認真講,單獨開一學期的課程都講不完。在《編譯原理及實踐》的書上,對於這部分的講解就恰到好處。作者主要講解的還是一種以堆棧為基礎的指令代碼,十分通俗易懂,讓人看了後,很容易模仿,自己下來後就可以寫自己的代碼生成。當然,對於其它代碼生成技術,代碼優化技術的講解就十分簡單了。如果要仔細研究代碼生成技術,其實另外還有本叫做《》,那本書現在由機械工業出版社引進的,十分厚重,而且是英文原版。不過這本書我沒有把它列為推薦書給大家,畢竟能把龍書的內容搞清楚,在中國已經就算很不錯的高手了,到那個時候再看這本《》也不遲。代碼優化部分在大學本科教學中還是一個不太重要的部分,就是算是實踐過程中,相信大家也不太運用得到。畢竟,自己做的編譯器能正確生成執行代碼已經很不錯了,還談什麼優化呢?
編譯原理的課程畢竟還只是講解原理的課程,不是專門的編譯技術課程。這兩門課程是有很大的區別的。編譯技術更關注實際的編寫編譯器過程中運用到的技術,而原理的課
❸ 匯編語言用什麼編譯器來編寫,編譯原理這門課程講的到底是什麼
很多的,例如MASM編譯器。
編譯原理內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成等,這門課大部分人聽起來比較困難,介紹編譯程序構造的一般原理和基本方法,雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對我們提供了系統而有效的訓練,有利於提高軟體人員的素質和能力。
❹ 編譯原理及實踐的書籍目錄
譯者序
前言 1.1 為什麼要用編譯器 2
1.2 與編譯器相關的程序 3
1.3 翻譯步驟 5
1.4 編譯器中的主要數據結構 8
1.5 編譯器結構中的其他問題 10
1.6 自舉與移植 12
1.7 TINY樣本語言與編譯器 14
1.8 C-Minus:編譯器項目的一種語言 18
練習 19
注意與參考 20 2.1 掃描處理 21
2.2 正則表達式 23
2.3 有窮自動機 32
2.4 從正則表達式到DFA 45
2.5 TINY掃描程序的實現 52
2.6 利用Lex 自動生成掃描程序 57
練習 65
編程練習 67
注意與參考 67 3.1 分析過程 69
3.2 上下文無關文法 70
3.3 分析樹與抽象語法樹 77
3.4 二義性 83
3.5 擴展的表示法:EBNF和語法圖 89
3.6 上下文無關語言的形式特性 93
3.7 TINY語言的語法 97
練習 101
注意與參考 104 4.1 使用遞歸下降分析演算法進行自頂向下的分析 105
4.2 LL(1)分析 113
4.3 First集合和Follow集合 125
4.4 TINY語言的遞歸下降分析程序 136
4.5 自頂向下分析程序中的錯誤校正 137
練習 143
編程練習 146
注意與參考 148 5.1 自底向上分析概覽 151
5.2 LR(0)項的有窮自動機與LR(0)分析 153
5.3 SLR(1)分析 160
5.4 一般的LR(1)和LALR(1)分析 166
5.5 Yacc:一個LALR(1)分析程序的生成器 173
5.6 使用Yacc生成TINY分析程序 186
5.7 自底向上分析程序中的錯誤校正 188
練習 192
編程練習 195
注意與參考 197第6章 語義分析 198第7章 運行時環境 266第8章 代碼生成 305附錄A 編譯器設計方案 373附錄B 小型編譯器列表 381附錄C Tiny Machine模擬器列表 417
❺ 有沒有講編譯器如何優化代碼的書,有關C語言的,推薦一下
代碼優化啊,現代編譯器採用優化方法都差不多,看編譯原理就行了,編譯原理也就後面會用一個小章帶過。常用的比如:循環展開,寄存器使用優化,常量直接算出來,除法優化,分支判斷優化等等很多很多。據說除法優化後和乘法相比慢不了多少,沒測過。
其實真正應該看的是計算機組成原理,當你理解了計算機工作機制後,這些優化方法都很容易理解,而且你也會發現,程序的運行效率的提高,一方面要靠處理器,比如流水線,超標量,多級緩沖等技術,另一方面就是編譯器的優化。
❻ 《編譯原理》pdf下載在線閱讀,求百度網盤雲資源
《編譯原理》(陳意雲)電子書網盤下載免費在線閱讀
鏈接:
書名:編譯原理
作者:陳意雲
豆瓣評分:6.2
出版社:高等教育出版社
出版年份:2003-1
頁數:381
內容簡介:
《編譯原理》介紹編譯器構造的一般原理和基本實現方法,主要內容包括詞法分析、語法分析、語義分析、中間代碼生成、代碼優化和目標代碼生成等。除了介紹命令式編程語言的編譯技術外,《編譯原理》還介紹面向對象語言和函數式編程語言的實現技術。《編譯原理》還強調一些相關的理論知識,如形式語言和自動機理論、語法制導的定義和屬性文法、類型論和類型系統等。
《編譯原理》取材廣泛新穎、圖文並茂,注意理論聯系實際。為滿足教師教學和學生自學及考研需求,《編譯原理》作者編寫了配套教學參考書《編譯原理習題精選與解析》(高等教育出版社2005年8月出版),同時提供本課程的電子教案,可從高等教育出版社高等理工教學資源網免費下載。《編譯原理》可作為高等學校計算機科學及相關專業的教材,也可供計算機軟體工程技術人員參考使用。
❼ 怎樣去寫一個編譯器(用C語言寫C語言編譯器),需要哪些知識做鋪墊,可以給一下相關網站和書籍的推薦嗎
書籍請參考編譯原理的龍書,以及flex,bison,llvm的manual。
如何寫我可以給你一個大致的流程,
編譯器由詞法分析器->語法分析器->中間代碼生成器->後端組成。
用C語言寫編譯器一般可以按照以下步驟:
1.使用flex生成詞法分析器。(flex可以通過自己編寫的描述文件來自動生成詞法分析器)
2.使用bison生成語法分析器。(bison可以通過自己編寫的描述文件來自動生成語法分析器)
3.通過語法分析器得到輸入代碼的語法樹表示。
4.編寫遍歷函數遍歷語法樹生成中間代碼。(這里推薦使用LLVM的中間代碼表示)
5.利用LLVM工具集來編譯執行所得到的中間代碼。
相關網站:
龍書(當當上去買一本)
http://dinosaur.compilertools.net/flex/index.html(flex手冊)
http://dinosaur.compilertools.net/bison/index.html(bison手冊)
http://www.llvm.org(LLVM官網)
❽ 介紹幾本c語言的代碼練習書
C程序設計之四書五經
榮耀/文
引言 自從Dennis M.Ritchie於1973年設計並實現C語言以來,計算機程序設計領域已經發生了巨 大的變化。以C語言為根基的C++、Java和C#等面向對象語言相繼誕生,並在各自領域大獲成 功。今天,C及其後裔幾乎統治了計算機程序設計世界。可以這么說,C語言的誕生是現代程序 語言革命的起點,它改變了程序設計語言發展的軌跡,是程序設計語言發展史中的一個里程碑。 然而,C並不僅僅是其他語言的起點和基礎,否則它早已成為程序設計語言發展過程中又 一個被遺棄者。和當初發明時一樣,C語言今天依然至關重要。它的表達力、效率、簡練、緊 湊、對機器的最終控制以及跨平台的高度移植性,使其在系統編程、嵌入式編程等領域一直占 據著統治地位,而C99標準的制訂則再一次使C語言煥發出新的活力。下文介紹C程序設計領域 中的幾本好書,其中一些堪稱經典。
1. Brian W.Kernighan, Dennis M.Ritchie,《C程序設計語言》 清華影印版、習題集;機械譯文版(新版、老版):習題集 這是迄今為止在所有程序設計語言書籍中最廣受尊敬的一部經典,是任何一名C程序員的 必讀之作。因為出自C語言的設計者 Dennis M.Ritchie 和著名的計算機科學家 Brian W.Kernighan之手,它被昵稱為「K&R C」。是它首先引入了「Hello World!」程序,這個程序幾乎 成了後來任何一本入門性程序設計語言書籍中的第一個例子。 如同C語言本身簡潔緊湊而極具威力一樣,這本書輕薄短小而極富張力。通過簡潔的描述 和典型的示例,它全面、系統、准確地講述了C語言的各個特性以及C程序設計的基本方法,內 容涵蓋基本概念、類型和表達式、控制流、函數與程序結構、指針與數組、結構、輸入與輸出、 UNIX系統介面以及標准庫等內容。 簡潔清晰是這本書最大的特色。這本小書可以教給你許多比它厚幾倍的「大部頭」的知識。 我認為那些動輒洋洋灑灑拼湊出好幾百頁乃至上千頁的技術作者應該好好向K&R學一學。對於 中、高級程序員而言,如果希望迅速獲得C語言的嚴肅知識而又不願意多花費哪怕一丁點時間, 這本書就是首選。四書五經:CSDN《程序員》四書五經專欄歷年文章匯總 順便說一句,這本書的索引製作非常出色,極具實用價值,這可能首先要歸功於正文部分 的簡明扼要。此外,盡管它看上去很像一本教程,但其實更是一本寫給專業程序員的指南。如 果你不具備任何其他語言程序設計背景或基本的C語言知識,這本書也許並不適合用作你的C語 言啟蒙讀物。
2. Perter Van Der LinDen,《C專家編程》 C專家編程 C語言是嚴肅的程序員語言,但這並不意味著C語言書籍必須板著面孔說教。在這本被C程 序員昵稱為「魚書」(封面上有一條「醜陋的」腔棘魚)的著作中,作為SUN公司編譯器和操作系統 核心開發組成員之一,Peter淋漓盡致地展示了其深厚的技術沉澱、豐富的項目經驗、高超的寫 作技巧以及招牌式的幽默。在這部作品中,作者以流暢的文字、詼諧的筆法將逸聞典故、智慧 和幽默自然地融入技術描述中,讀來宛若一本小說,極富趣味。 本書講述了C語言的歷史、語言特性、聲明、數組、指針、連接、運行時以及內存使用等 知識,揭示了C語言中許多隱晦之處,尤其深入解析了聲明、數組和指針、內存使用等方面的 細節。要想成為一名專家級C程序員,這些內容都是必須掌握的。和其他滿是抽象例子的C語言 書籍不同,這本書充滿了大量的來自真實世界的C程序設計實例,它們對C程序員具有很高的參 照價值。另外,每一章都以極富趣味的「輕松一下」收尾,而附錄A「程序員工作面試的秘密」則是 任何語言的程序員在應聘工作前增強自信的好材料。 我懷疑真正的C專家可能用不著看這本書 ——從內容到組織方式到行文風格都決定了這 是一本輕松愉快的「從菜鳥到高手」的進階讀本,所以,它理應擁有更廣泛的讀者群。初級程序 員往往更需要熱情的鼓勵,在閱讀這本書的過程中,你定會深深地被作者對編程的激情所感染。 世間並無完美。我認為這本書的缺陷在於,和大多數平庸的C語言書籍一樣,它畫蛇添足 地加入了一章關於C++的描述。在今天看來,這個描述既不全面也有失公允。不過,鑒於作者 是在1994年從一名C程序員的角度去觀察C++,這一點也就不足為奇了。
3. Samuel P. Harbison, Guy L. Steele,《C語言參考手冊(第五版)》四書五經:CSDN《程序員》四書五經專欄歷年文章匯總 影印版(機械工業出版社)、中文版(機械工業出版社) 在C語言參考手冊類書籍里,Samuel P. Harbison 和Guy L. Steele合著的C: AReference Manual是非常出色的一本。這本手冊的第五版新增了對C99標準的介紹,以便滿足新時期C語 言學習的需要。全書共分為兩大部分,第一部分專注於C語言特性,第二部分則全面討論了C標 准庫。本書涵蓋C99、C89、傳統的C、所有版本的C運行庫以及編寫與C++兼容的C代碼等一 切知識。 這本手冊只是中等厚度,但它比「比它更厚」的其他參考手冊更清晰地描述了C語言的現在和 過去的方方面面。整本手冊技術細節描述精確,組織條理清楚,內容完備詳盡而又簡明扼要。 可以這么說,它在廣度、深度和精度方面都是出類拔萃的。對於中、高級C程序員而言,這本 手冊值得常備案頭,它幾乎肯定要比K&R的著作使用頻率更高。
4. David Hanson,《C語言介面與實現:創建可重用軟體的技術》,機械工業出版社 C語言介面與實現:創建可重用軟體的技術 C語言能夠歷經三十多年而不衰,一個重要的原因在於它的適應能力。在這「復用」、「面向 對象」、「組件」、「異常處理」等先進機制漫天飛舞的年代,C語言仍然能夠憑借它小而優雅的語言 特性,在相當程度上滿足現代軟體體系架構提出的要求。只不過,想要達到這個程度,必須要 在C的應用功力上達到最高層次。在嵌入式、系統軟體以及對性能要求極高的系統開發中,開 發人員必須達到這樣的層次,熟練掌握C語言的高級特性,才能夠同時滿足效率和靈活性、復 用性的要求。可惜,雖然C語言技術圖書汗牛充棟,但是關注這個峰頂之域的作品卻是屈指可 數。David Hanson的C Interfaces and Implementations就是個中翹楚。 David Hanson是業內大名鼎鼎的自由編譯器lcc的合作者。在這個項目中,他負責提供高度四書五經:CSDN《程序員》四書五經專欄歷年文章匯總 可復用的基礎架構。在不斷的實踐中,他完全使用ANSI C形成了一整套可復用組件庫。這套組 件庫架構清晰,性能優異,而且提供了很多高級的特性,比如類Win32 SEH的異常處理機制、 可移植的線程庫、高性能的內存池、豐富的可復用數據結構組件。David Hanson把他在創作這 些組件的過程中所積累的心得以及對其源碼的精緻剖析原原本本地寫在了這本書里。這樣的著 作,當然堪稱C語言領域里的銘心絕品。難怪已故著名技術作家Richard Stevens對此書贊不絕 口,他說:「這本書中的技術,對於大部分C程序員來說,已經遺忘得太久了。」對於希望能在C 語言應用上達到最高層次的核心程序員而言,這本書是難得的必讀之作。
其他 除了以上四本書以外,我還樂意推薦Andrew Koenig的著作《C陷阱和缺陷》(人民郵電出 版社)和Deitel父子合著的C How to Program兩本書。 C陷阱和缺陷 Andrew Koenig是世界上屈指可數的C++專家,他的這本書可能是最薄的一本C語言經典。 它簡明扼要地講述了C程序設計中的陷阱和缺陷,包括詞法陷阱、語法陷阱、語義陷阱、連接、 庫函數、預處理器以及可移植性缺陷等,最後一章還給出了關於如何減少程序錯誤的建議以及 前面各章問題的參考答案。盡管這個小冊子成書於C89標准制定之前,然而,即使到了C99早 已頒布的今天,書中提到的大多數陷阱和缺陷一如十五年前那樣使我們警醒。 C程序設計教程 Deitel父子合著的C How to Program一直是非常好的C語言入門教程,我手頭的中譯本名為 《C程序設計教程》(機械工業出版社出版,原書第二版)。除了對技術的正規描述(輔以許 多簡明扼要的例子)外,每一章後面都帶有小結、術語、常見的程序設計錯誤、良好的程序設四書五經:CSDN《程序員》四書五經專欄歷年文章匯總 計習慣、性能忠告、可移植性忠告、軟體工程評述、自我測驗練習及答案等。整書內容清晰, 組織良好,易於閱讀和理解。值得一提的是,有許多入門書讀完一遍即可扔掉,而這一本是個 例外。 結語 以上這幾本書很大程度上局限於描述C語言及標准庫本身,如果希望學習更專業的、領域 相關的C程序設計技術,你可以在選擇閱讀這幾本書的基礎上繼續查閱專門書籍。此外,在C語 言書籍領域,水平不相上下的作品有很多,這幾本只是根據我自身的閱讀體驗而做出的推薦。 我並不是一名C程序員,我的大多數時間都花在C的後裔語言尤其是C++身上了。然而,正 如你知道的那樣,C++並不全是類和模板,不全是面向對象和泛型編程,在較低的層面,C++ 的各個實現一如既往在很大程度上兼容C。C++和C的親密關系決定了每一本C語言經典都應該 是C++程序員的讀物。 這世界變化得真是太快。各色新事物層出不窮,讓人眼花繚亂、目不暇接。人們也很容易 被那些五光十色的花哨玩意兒所吸引,常常會忘記構築過去、現在和未來的堅實基礎。C語言 就是這樣的基礎之一。今天,世界上有許多我們看不見的重要軟體是用C語言(以及C++等)編 寫而成的,正是它們在默默地支撐著這個信息世界的運轉。
❾ 編譯原理的內容簡介
本書介紹編譯器構造的一般原理和基本實現方法,主要內容包括詞法分析、語法分析、語義分析、中間代碼生成、代碼優化和目標代碼生成等。除了介紹命令式編程語言的編譯技術外,本書還介紹面向對象語言和函數式編程語言的實現技術。本書還強調一些相關的理論知識,如形式語言和自動機理論、語法制導的定義和屬性文法、類型論和類型系統等。
本書取材廣泛新穎、圖文並茂,注意理論聯系實際。本書可作為高等學校計算機科學及相關專業的教材,也可供計算機軟體工程技術人員參考使用。