A. 編譯的詞法分析中,ε有何用,僅僅是為了畫NFA圖方便嗎為什麼DFA圖中沒有ε
ε只能出現在NFA中,當然不是為了方便直觀,而是連通NFA和DFA的橋梁。編譯原理講授的不是如何繪制NFA或者DFA,二是告訴讀者怎樣能夠自動實現NFA或DFA的構造。在實際應用中ε可以幫助計算機轉換NFA為畢隱DFA,而在屬性文法和語法制導階段,它也是溝通綜合屬性與繼承屬頌數旅性、執行語義動作不可或缺的一部分。另外ε的使用可以大大簡化文法產生式的構造難度。我記得最初使用ε是為了使得文法體系(字母表)更加完善,但是在實際應用中卻變得應用廣泛(此觀點不一定正確)。
最後想說的是,在編譯中,ε也帶來野凳了不小的麻煩,否則也就不會有諸如「去空產生式」這樣的演算法了:)
B. c語言 :函數調用時,棧的變化問題————(有請高手高手高高手)
其實想知道這些東西,單從C代碼上是看不出什麼來的。反匯編後看匯編代碼一清二楚。當一個父函數調用子函數時,在父函數中先將子函數用到的參數壓入堆棧,然後明耐再以一個call指令調用子函數。而call指令其實要做兩件事:將自己的EIP值壓入堆棧;以一個jmp跳轉到子函數代碼的開始位置。而在子函數內,首先就是悔源這樣:
MOV EBP,ESP
SUB ESP,0x100
... ...
也就是要將當前ESP保存到EBP,然後用一個SUB指令開辟子函數所用的局部內存空間。子函數對父函數的參數的引用一般都是EBP+4,EBP+8這樣的,這激前春樣剛好就能訪問父函數壓入堆棧的參數。而對自己申明的參數的訪問,就是EBP-0,EBP-4等等。對匯編不太熟悉的只從C代碼的邏輯上去分析這樣的問題,而實際情況是C代碼要轉換成機器代碼,機器代碼做的一些工作只有在匯編中能看到。堆棧就是一個傳遞參數的內存塊,編譯器在編譯代碼時,自動生成了子函數訪問父函數參數的代碼。
不知道這樣說能不能幫你解決問題。
C. 哪本"編譯原理"的書比較好
我們學校用的是《編譯原理》與《編譯原理與實踐》這兩本書,這兩本書都是國外的教材。我覺得《編譯原理與實踐》這本書不錯,自學應該能看懂,而且代碼比較多,書最後還有整個小型編譯器的源代碼。
編譯不好學,你就慢慢學吧。
下面的資料請作參考:
當代編譯技術三大聖經級別的教材
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年在貝爾實驗室做研究工作。主要研究方向是計算機安全、編譯器設計、程序設計語言等。
D. 計算機科學與技術,大二了,我該學些什麼呢,現在只會寫幾行代碼
我不是大神,事實上我還是大一呢。我已經學了C,正在學C++,我也是一頭霧水。再好多看些相關書籍。我給你推薦些。我只看了一點就受益無窮。求採納。
計算機經典教材
目錄
1 前言
2 Mathematics (數學)
3 Data Structures & Algorithms (數據結構、演算法)
4 Compiler (編譯原理)
5 Operating System (操作系統)
6 Database (資料庫)
7 C (C 語言)
8 C++ (C++ 語言)
9 Object-Oriented (面向對象)
10 Software Engineering (軟體工程)
11 UNIX Programming (UNIX編程)
12 UNIX Administration (UNIX系統管理)
13 Networks (網路)
14 Windows Programming (Windows 編程)
15 Other (其它)
前言
推薦原則:
寧缺勿濫,決不混進糟粕 (好書不一定對所有人都合適,但對於它的目標讀者群來說,一定是好書)。
選書原則:
有國外的,不看國產的
有原版的,不看翻譯的
看大師的作品
看書原則:
不要看C、C++、java……今天聽說C好,就跑去學C。明天聽說java好,就跑去學java,最後你什麼也學不到。因為不管什麼語言,永遠不要忘記語言的本質。語言只是一種工具,它的作用就是完成你的工作。不管把
C 的語法學得如何透徹,也不管把 C 的
trick用的如何精妙,這都不能表示你會編程。要學會如何分析問題,如何設計程序,如何用一種具體的語言來實現。如果你只會做最後一步,你只是一個編碼者(coder),還不是一個程序員(programmer)。做一個programmer,不要做coder。總之,不要為了學語言而去學語言(除非你是個語言學家)。
不要放棄對基礎知識的學習。所謂基礎知識,一般都有一個特點,那就是:它們可能看起來沒用,但如果你忽視它們的話,總有一天你會後悔莫及。所以,如果不想以後再後悔的話,就在今天多花點時間。
不管學什麼東西,學之前先弄明白自己要學的是什麼東西,它有什麼用,在你已經學和以後的發展方向中,它處於什麼位值。如果這些都不明白,就好比在茫茫的叢林裡面四處亂撞,就算能出去,也一定會走很多彎路。
對於軟體工程之類的東西,不象 C
語言有著嚴格的標准,最好的辦法就是兼收並蓄,能看的都看,然後(最重要的)在此之上形成自己的思想(不然就什麼都白看了)。
盡信書不如無書。書里寫的只不過是寫書的人認為正確的觀點而已。學習前人的知識和經驗,在此基礎上形成自己的知識結構、觀點和思維方式,才是學習的真正目的。
一。Mathematics (數學)
書名(英文):Discrete Mathematics and Its Applications (Fifth Edition)
書名(中文):離散數學及其應用 (第五版)
原作者:Kenneth H.Rosen
書名(英文):Concrete Mathematics : A Foundation for Computer Science
(Second Edition)
書名(中文):具體數學:計算機科學基礎 (第2版)
原作者:Ronald L. Graham / Donald E. Knuth / Oren Patashnik
二。Data Structures & Algorithms (數據結構、演算法)
書名(英文):Data Structures and Algorithm Analysis in C, Second Edition
書名(中文):數據結構與演算法分析--C語言描述 (第二版)
原作者:Mark Allen Weiss
大凡國外的數據結構教科書,都有一個共同的特點,就是他們的第一章都不是講的數據結構,而是軟體工程的基本原則。我個人認為這是十分必要的,特別是對於大
多數沒有接觸過程序設計的同學來說,在數據結構這個可以說是第一次接觸程序設計的課程中能學習到基本的軟體工程原則,對於以後的學習是十分有好處的。寫一
個亂七八糟的程序出來還不如什麼都不寫。在我看來,這本書有兩個優點:一:將軟體工程的基本原則貫穿全書,二:簡單,容易理解。對於初學者,這本書無疑是
非常合適的。mufasa
書名(英文):Data Structures & Program Design In C (Second Edition)
書名(中文):數據結構與程序設計 C 語言描述 (第二版)
原作者:Robert Kruse / C.L. Tondo / Bruce Leung
書名(英文):Data Structures with C++ Using STL (Second Edition)
書名(中文):數據結構C++語言描述描述—應用標准模版庫 (第二版)
原作者:William Ford, William Topp
書名(英文):Introction to Algorithms (Second Edition)
書名(中文):演算法導論 (第二版)
原作者:Thomas H. Cormen / Charles E. Leiserson / Ronald L. Rivest /
Clifford Stein
書名(英文):The Art of Computer Programming, Volume 1 : Fundamental
Algorithms (Third Edition)
書名(中文):計算機程序設計藝術 第1卷 基本演算法 (第3版)
原作者:Donald E. Knuth
書名(英文):The Art of Computer Programming, Volume 2 : Seminumerical
Algorithms (Third Edition)
書名(中文):計算機程序設計藝術 第2卷 半數值演算法 (第3版)
原作者:Donald E. Knuth
書名(英文):The Art of Computer Programming, Volume 3 : Sorting and
Searching (Second Edition)
書名(中文):計算機程序設計藝術 第3卷 排序和查找 (第2版)
原作者:Donald E. Knuth
三。Compiler (編譯原理)
書名(英文):Compilers: Principles, Techniques, and Tools
書名(中文):編譯原理、技術與工具
原作者:Alfred V. Aho / Ravi Sethi / Jeffrey D. Ullman
書名(英文):Advanced Compiler Design and Implementation
書名(中文):高級編譯器設計與實現
原作者:Steven S. Muchnic
書名(英文):Modern Compiler Implementation in C
書名(中文):現代編譯原理--C語言描述
原作者:Andrew W.Appel / Maia Ginsburg
四。Operating System (操作系統)
書名(英文):Operating System Concepts (Sixth Edition)
書名(中文):操作系統概念 (第六版)
原作者:Abraham Silberschatz / Peter Baer Galvin / Greg Gagne
書名(英文):Operating Systems : Design and Implementation (Second
Edition)
書名(中文):操作系統:設計及實現 (第二版)
原作者:Andrew S. Tanenbaum / Albert S. Woodhull
翻譯者:王鵬、尤晉元、朱鵬、敖青雲
書名(英文):The Design and Implementation of the 4.4BSD Operating System
書名(中文):4.4BSD操作系統設計與實現
原作者:Marshall Kirk McKusick / Keith Bostic / Michael J. Karels / John
S.Quarterman
書名(英文):The Design and Implementation of the FreeBSD Operating System
書名(中文):FreeBSD操作系統設計與實現
原作者:Marshall Kirk McKusick / George V. Neville-Neil
翻譯者:張輝
書名(英文):The Design of The UNIX Operating System
書名(中文):UNIX操作系統設計
原作者:Maurice J.Bach
書名(英文):UNIX Internals : The New Frontiers
書名(中文):UNIX系統內幕
原作者:Uresh Vahalia
書名(英文):UNIX Systems for Modern Architectures
書名(中文):現代體系結構上的UNIX系統--內核程序員的SMP和Caching技術
原作者:Curt Schimmel
翻譯者:張輝
書名(英文):Lions' Commentary on UNIX 6th Edition with Source Code
書名(中文):萊昂氏UNIX源代碼分析
原作者:John Lions
書名(英文):Distributed Systems : Principles and Paradigms
書名(中文):分布式系統:原理與範例
原作者:Andrew S.Tanenbaum / Maarten van Steen
五.Database (資料庫)
書名(英文):An Introction to Database Systems, Eighth Edition
書名(中文):資料庫系統導論 (第八版)
原作者:C. J.Date
書名(英文):Database System Concepts, Fourth Edition
書名(中文):資料庫系統概念 (第四版)
原作者:Abraham Silberschat / Henry F.Korth / S.Sudarshan
六。C (C 語
書名(英文):The C Programming Language, Second Edition
書名(中文):C程序設計語言,第二版
原作者:Brian W. Kernighan / Dennis Ritchie
書名(英文):The Art and Science of C : A Library-Based Introction to
Computer Science
書名(中文):C語言的科學和藝術
原作者:Eric S.Roberts
書名(英文):Programming Abstractions in C : A Second Course in Computer
Science
書名(中文):C程序設計的抽象思維
原作者:Eric S.Roberts
書名(英文):Expert C Programming
書名(中文):C專家編程
原作者:Andrew Koenig
書名(英文):C Traps and Pitfalls
書名(中文):C陷阱與缺陷
原作者:Andrew Koenig
七。C++ (C++ 語言)
書名(英文):C++ Primer, Third Edition & Forth Edition
書名(中文):C++ Primer (第三版、第四版)
原作者:Stanley B.Lippman / Josée LaJoie / Barbara E.Moo
翻譯者:李師賢、蔣愛軍、梅曉勇、林瑛
平心而論,這本書的第三版並不適合入門,但是第四版適合。所以第四版的出現並不意味著第三版就失去了其價值。在我看來最好的辦法就是買一本第四版的中文版和一本第三版的英文版。中文版用來入門,英文版用來作參考手冊。mufasa
書名(英文):The C++ Programming Language, Special Edition
書名(中文):C++ 程序設計語言 (特別版)
原作者:Bjarne Stroustrup
書名(英文):Inside the C++ Object Model
書名(中文):深度探索 C++ 對象模型
原作者:Stanley B. Lippman
書名(英文):Effective C++, Thrid Edition
書名(中文):Effective C++ (第三版)
原作者:Scott Meyers
書名(英文):More Effective C++
書名(中文):More Effective C++
原作者:Scott Meyers
翻譯者:侯捷
書名(英文):Thinking in C++, Second Edition
書名(中文):C++編程思想 (第二版)
原作者:Bruce Eckel
書名(英文):Thinking in C++, Volume 2 : Practical Programming
書名(中文):C++編程思想 第2卷:實用編程技術
原作者:Bruce Eckel / Chuck Alison
書名(英文):Ruminations on C++ : A Decade of Programming Insight and
Experience
書名(中文):C++沉思錄
原作者:Andrew Koenig / Barbara Moo
八。Object-Oriented (面向對象)
書名(英文):Object-Oriented Analysis and Design with Applications, Second
Edition
書名(中文):面向對象分析與設計 (第二版)
原作者:Grady Booch
書名(英文):Object-Oriented Modeling and Design with UML,Second Edition
書名(中文):UML面向對象建模與設計 (第二版)
原作者:Michael Blaha / James Rumbaugh
翻譯者:車皓陽、楊眉
書名(英文):Object-Oriented Software Construction (Second Edition)
書名(中文):面向對象軟體構造 (第二版)
原作者:Bertrand Meyer
書名(英文):Design Patterns : Elements of Reusable Object-Oriented
Software
書名(中文):設計模式:可復用面向對象軟體的基礎
原作者:Erich Gamma / Richard Helm / Ralph Johnson / John Vlissides
九。Software Engineering (軟體工程)
書名(英文):Software Engineering (7th Edition)
書名(中文):軟體工程 (第七版)
原作者:Ian Sommerville
書名(英文):Software Engineering : A Practitioner's Approach (Fifth
Edition)
書名(中文):軟體工程:實踐者之路 (第5版)
原作者:Roger S. Pressman
書名(英文):Software Engineering : Theory and Practice (Second Edition)
書名(中文):軟體工程:理論與實踐 (第二版)
原作者:Shari Lawrence Pfleeger
書名(英文):The Mythical Man-Month
書名(中文):人月神話
原作者:Frederick Phillips Brooks
書名(英文):Software Architecture : Perspectives On an Emerging Emerging
Discipline
書名(中文):軟體體系結構:一門初露端倪學科的展望
原作者:Mary Shaw / David Garlan
十。UNIX Programming (UNIX編程)
書名(英文):Advanced Programming in the UNIX Environment, Second Edition
書名(中文):UNIX 環境高級編程 (第二版)
原作者:W.Richard Stevens / Stephen A.Rago
翻譯者:尤晉元、張亞英、戚正偉
書名(英文):The UNIX Programming Environment
書名(中文):UNIX 編程環境
原作者:Brianw. Kernighan
書名(英文):UNIX Network Programming, Volume 1 : The Sockets Networking
API (Third Edition)
書名(中文):UNIX 網路編程 卷1:套接字聯網API (第三版)
原作者:W. Richard Stevens / Bill Fenner / Andrew M. Rudoff
書名(英文):UNIX Network Programming Volume 2 : Interprocess
Communications (Second Edition)
書名(中文):UNIX 網路編程 卷2:進程間通信 (第2版)
原作者:W. Richard Stevens
書名(英文):The Art of UNIX Programming
書名(中文):UNIX 程序設計藝術
原作者:Eric Raymond
UNIX Administration (UNIX系統管理)
書名(英文):UNIX System Administration Handbook (Third Edition)
書名(中文):UNIX系統管理技術手冊 (第三版)
原作者:Evi Nemeth / Garth Snyder
書名(英文):Linux Administration Handbook
書名(中文):Linux系統管理技術手冊
原作者:Evi Nemeth / Garth Snyder / Trent R.Hein
書名(英文):UNIX Unleashed (Fourth Edition)
書名(中文):UNIX 技術內幕 (第四版)
原作者:Robin Anderson / Andy Johnston
書名(英文):UNIX:The Textbook
書名(中文):UNIX操作系統教程
原作者:Syed Mansoor Sarwar / Robert Koretsky / Syed Aqeel Sarwar
書名(英文):Unix Backup & Recovery
書名(中文):UNIX 備份與恢復
原作者:W.Curtis Preston
十一。Networks (網路)
書名(英文):Computer Networks (Fourth Edition)
書名(中文):計算機網路 (第4版)
原作者:Andrew S. Tanenbaum
書名(英文):TCP/IP Illustrated, Volume 1 : The Protocols
書名(中文):TCP/IP 詳解 卷1:協議
原作者:W. Richard Stevens
書名(英文):TCP/IP Illustrated, Volume 2 : The Implementation
書名(中文):TCP/IP詳解 卷2:實現
原作者:Gary R. Wright / W. Richard Stevens
書名(英文):TCP/IP Illstrated, Volume 3 : TCP for Transactions, HTTP,
NNTP, and the UNIX Domain Protocols
書名(中文):TCP/IP詳解 卷3:TCP事務協議、HTTP、NNTP和UNIX域協議
原作者:W. Richard Stevens
書名(英文):Internetworking with TCP/IP Vol I : Principles, Protocols,
and Architecture (Third Edition)
書名(中文):TCP/IP 網路互連技術 卷1:原理、協議和體系結構 (第3版)
原作者:Douglas E. Comer
書名(英文):Internetworking with TCP/IP Vol II : Design, Implementation,
and Internals (Second Edition)
書名(中文):TCP/IP 網路互連技術 卷2:設計與實現 (第2版)
原作者:Douglas E. Comer / David L. Stevens
書名(英文):Internetworking with TCP/IP Vol III : Client-Server
Programming and Applications, BSD Socket Version (Second Edition)
書名(中文):TCP/IP 網路互連技術 卷3:客戶伺服器編程和應用BSD套接字版 (第2版)
原作者:Douglas E. Comer / David L. Stevens
書名(英文):Internetworking with TCP/IP Vol III : Client-Server
Programming and Applications, Windows Sockets Version
書名(中文):TCP/IP 網路互連技術 卷3:客戶伺服器編程和應用Windows套接字版
原作者:Douglas E. Comer / David L. Stevens
十二。Windows Programming (Windows 編程)
書名(英文):Inside Microsoft Windows 2000 (Third Edition)
書名(中文):Microsoft Windows 2000 技術內幕 (第3版)
原作者:David A.solomon Mark E.Russinovich
書名(英文):Programming Windows (Fifth Edition)
書名(中文):Windows 編程 (第5版)
原作者:Charles Petzold
書名(英文):Programming Applications for Microsoft Windows
書名(中文):Microsoft Windows 應用程序設計
原作者:Jeffrey Richter
書名(英文):Programming with Microsoft Visual C++ .NET (Sixth Edition)
書名(中文):Visual C++.NET 技術內幕 (第6版)
原作者:George Shepherd / David Kruglinski
書名(英文):Dissecting MFC
書名(中文):深入淺出MFC
原作者:侯捷
十三。Other (其它)
書名(英文):Computer Systems : A programmer' s Perspective
書名(中文):計算機系統
原作者:Randal E. Bryant / David R. O'Hallaron
書名(英文):Pattern Classification (Second Edition)
書名(中文):模式分類 (第2版)
原作者:Richard O. Duda / Peter E. Hart / David G. Stork
書名(英文):Code Complete 2
書名(中文):代碼大全第2版
原作者: Steve McConnell
書名(英文):Programming Pearls (2nd Edition)
書名(中文):編程珠璣第2版
原作者: Jon Bentley
別人給我推薦的,我只看過一兩本。
E. 浙江師范大學 軟體工程專業怎麼樣 知乎
這毋庸置疑是一個熱門專業,而且熱得發燙
其實這個專業也並不是很新,開設了也有一段時間了
學這個專業首先必須要掌握一門程序設計語言,主修課程有離散數學、數據結構、演算法分析、面向對象程序設計、現代操作系統、資料庫原理與實現技術、編譯原理、軟體工程、軟體項目管理、計算機安全等課程,對數學的要求非常高,也需要比較大的想像力,在大多數人看胡激來可能是一個比較枯燥的學科,也是一個相當費腦力的專業
畢業後主要從事軟體開發工作,按照目前國際上大多數軟體公司的慣例,軟體工程師都會以技術入股的形式佔有公司的一定股份,因此收入通常是相當可觀的
不過軟體業在國內雖然起步不久,但在國際上已經發展了很長時間,大量的軟體都已經相當成熟,因此想在這個領域內有所作為還是比較困難的,尤其是國內的軟體公司在數量上和實力上都比較有限,對軟體工程師的需求其實並沒有大多數人想像的那麼大,加上社會上也出現了大量的培訓班培養低端軟體人才,可以說國內中低端軟體人才已經趨近飽和,不過在高端軟體人才方面仍有較大的塌納缺口
因此名牌大學軟體工程畢業的學生依然比較吃香,但是非名牌大學尤其是普通本科院校的畢業生在就業上則有比較大的困難
目前國內軟體工程專業最好的當然還要算是北大和清華,此外上海交大,北航,哈工大,南開,復旦等老牌褲衫襪名校也都具備相當的實力
F. 函數調用時,實參存儲在哪個函數的棧幀中
程序中,一個函數是一個過程,這個過程可以分為包括傳入參數、過程代碼、返回三部分構成。由於一個函數過程需要用到內部變數、臨時變數等,所以需要在進程空間的棧空間分配一段存儲片段來存儲函數過程中的這些參數,該內存片段即為棧幀。
棧幀的由來:
為一個函數的過程提供一個存儲函數局部變數,參數,返回地址和其他臨時變數;
棧幀的結構:
圖片來源(現代編譯原理)
棧幀的周期:
進入函數~函數返回,該階段內棧幀作為
不同的語言具體的實現方式略有不同,但是,總體上,fun(a,b);
局部變數:
包括函數傳入的形參和函數內部定義的變數;
返回地址:
指令指針P指向call fun,那麼fun棧幀存儲的返回地址為P+1;現今的編譯器的一個約定是將返回地址存到一個固定的寄存器中,這樣比讀取棧幀(內存)效率要高。
臨時變數:
主要為計算,運算過程中的中間臨時變數;
參數傳遞:
其一:如果fun中調用另一個函數k(a,b...n);那麼,傳遞的參數是形參,按照現代編譯規定,前k個形參是通過寄存器傳遞,後n-k個形參通過棧幀的實參部分(棧幀的尾部)來傳遞;
其二:主要為在fun中要調用函數g(&a,&b),那麼為g()函數傳出實參(形參是通過寄存器來傳遞的)是通過「傳出實參」區塊進行的,這么做主要是為了保證該實參能夠被內層嵌套的函數訪問。比如,g函數由調用一個k(a地址)函數,同樣需要用到a的地址,所以fun在傳遞參數時必須為實參(&a)傳遞申請固定的內存存儲空間(而非用寄存器)這樣k函數可以通過固定的內存地址(fun的形參列表來獲取參數值)。這時的g的棧幀為fun棧幀的下一幀(相鄰的空間地址),即調用者和被調用者的棧幀是相連的;
保護的寄存器:
棧幀作為函數過程的一個臨時內存存儲區塊,同時負責函數調用過程中寄存器值的保存和還原。即:假設fun函數目前佔用了寄存器Ri存儲一個臨時變數t,而此時調用了函數g(),在g()函數中可能需要用到寄存器Ri做運算的臨時存儲,那麼如何確保g()函數調用返回後,Ri恢復到fun中t的原來值。這就需要在調用者或者被調用者中選擇其一來保存原有Ri的值,即caller-save或者callee-save。
最後一個問題:進程空間中棧幀的體現是什麼?
進程的棧空間 & 棧幀的增長:
調用函數和被調用函數間的棧幀是相鄰的,即如果進程進入一個遞歸函數f(),遞歸k層。那麼在第k層嵌套時,進程的的棧空間已產生出新的k個連續的f()函數的棧幀,當然每個棧幀的內存儲的變數值是因函數過程而定的。
G. 求C語言初學者書籍推薦
先看《C Primer Plus中文版》(如果你英語好,可以看英文版《C Primer Plus 》)推薦從經典入手。推薦的話,這本書上的習題是有答案的,可以練練。
如果著急的話可以看譚浩強的《C語言程序設計》,看完基本小程序會寫,算入門了。
進階的書去看《The C Programming Language》,俗稱C語言聖經。
再進一步就是多寫代碼的經驗和根據需要學習相應的C語言(比如Object—C,寫Apple App用的)
至於你選的其他的書都可以先不看,其中《21天學通c(第三版)》《C語言編程寶典》《你必須知道的495個C語言問題 》基本是用來誆騙新手的商業書,噱頭比較重,有用的不多,重復性很高。
《C和指針》《C陷阱與缺陷》是比較好的書,但是有點高階了,如果不是研究C語言的話基本上用不到,除非是公司里的C語言工程師才看。
H. 求虎書《現代編譯原理C語言描述》中文電子版
你試試我愛讀電子書搜索下吧
I. 求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內核分析及編程
J. 「龍書」虎書「鯨書」有什麼區別要不要全都看完是不是全部看完了就會設計語言了
如果是有了一定的編譯器學習基礎,可以看虎書。 但是入門的話,龍書更基礎,同時一個更詳細。