❶ 關於計算機網路方面的書籍
1. 計算機網路常識書籍
計算機網路常識書籍 1.計算機網路入門需要看那些書籍
1)編碼:隱匿在計算機軟硬體背後的語言,此書從信息的編碼,數字的不同進製表示,到計算機採用的二進制機器級表示開始,到用電路構建一個簡單的加法器,觸發器,計數器,存儲器,甚至一個具有控制器,運算器,存儲器的簡易CPU,娓娓道來,真是醍醐灌頂。最後還談到了圖形界面的原理。此書作者更是被傳為聖經的《Windows程序設計》的作者Charles Petzold。讀完此書可對計算機硬體的原理與設計有一全面深入之認識,猶如身處群山之巔,一覽無余。
2)深入理解計算機系統 上一本《編碼》通俗易懂,即使沒有計算機相關知識也能懂,但缺乏一些計算機機制的介紹。此書是國外著名的介紹計算機系統方面的書,從程序員的角度帶你暢游計算機系統架構。涉及程序的機器級表示(機器碼,匯編),處理器體系結構,存儲器結構,系統IO,網路編程,並發編程,以及程序性能的優化。讀完此書可對計算機系統,程序設計有一深層次了解。
3)就C語言而言,K&R的 C程序設計語言 的無疑是最好的參考書,不過對初學者來說還是有一定難度,輔以諸如 C和指針 ,C陷阱與缺陷 會有更好的效果。當然多寫程序才是王道,多寫才能發現問題,加深認識。
4)Debug Hacks 此書介紹GDB調試工具及調試技巧,本人現在主要就是使用gcc gdb啦。此書助你更好的找出臭蟲。
6)數據結構與演算法分析 介紹演算法和數據結構的書籍很多,但本人就是用這本書學習的,所以推薦。此書的前3章和第7章就介紹了題主要求的一些數據結構和演算法,後面幾張介紹樹,排序,圖論演算法,及一些高級數據結構。讀完此書將助你設計更優美的程序。
2.計算機網路經典書籍
《tcpip詳解》分三卷,國外經典計算機教材,有中文譯版,不過不適合你的。
《計算機網路》也分很多種,如果你要考網工的話或者你想學習網路推薦你看以下的書籍:
網路工程教程(第二版) 雷震甲 主遍 清華大學出版 (這本太深了,不過內容全)網工指定教材
網路工程必讀系列 王達 這套書我看了兩遍,實在不錯。。。
計算機網路第五版 謝希仁 主遍 謝希仁同時還出了很多書都關於TCP/IP的書籍,具體書名我忘記,我覺得他講解得思路清晰,易理解,適合基礎差的。
計算機網路第四版,這是國外經典計算機網路經典教程,作者都是英文名字(具體我忘記了) ,我以前我學時很喜歡看這本。
3.計算機網路方面有哪些書籍值得推薦
計算機網路第五版,謝希仁的,個人感覺是國內最好的初級書籍。
如果想對網路有個清晰、全面的認識,可以閱讀下面三本書籍: 第一本就是潘愛民翻譯的Andrew S.Tanenbaum的《計算機網路》,此書講明白了網路之道,即計算機網路通信的主要原理; 第二本是W.Richard Stevens的《TCP/IP詳解卷一:協議》,此書講明白了網路之術,即TCP/IP協議簇的工作過程; 第三本是Douglas E.er的《計算機網路與網際網路》,此書嘗試在更廣泛意義上解答「計算機網路和網際網路是如何工作的」這一基本問題,解釋了協議是如何使用硬體和應用是如何使用協議來滿足用戶的需求。
4.有關計算機編程,網路基礎知識的書籍
建議你從C語言開始學,學好了它以後學其他語言會很容易上手
推薦你先看譚浩強的《C語言程序設計》先,這是一部非常好的C語言書籍,慢慢來學習程序設計是一個非常漫長的過程,不要著急,一本書多看兩遍三遍,學會交叉學習法,在學習C的過程中,可以看看數據結構,編譯原理,操作系統等書籍,對編成都是很有幫助的。最開始學習的時候,先不要編一些比較大的程序,多編一些小程序,比如數組運算,字元組合等等,指針是C語言的精華,是比較復雜的部分。如果指針這部分都可以熟練的應用,那麼C語言里你還有什麼不明白的嗎,我相信你,你一定能學習好C語言的。
可以按照C——C++——JAVA的順序學習,C++的學習是很有難度的,類,標准庫,多態,繼承等等比較抽象難道懂的概念,雖然他秉承了C語言的風格,但是有很多很多是C語言不具備的,要多看書,上機實踐也是必不可少的。《C++編程思想》,《C++標准庫》,這些書都非常好,內容也很全面,常式書籍也是必不可少的,多看源代碼對編程是很有幫助的,也會少走很多彎路。總之,C++的學習是一個比較漫長的過程,大概需要兩年的時間,這只是底限,如果想學通,學精,還需要更多的時間。
我向你推薦一些C++經典書籍:
c++程序設計教程
c++編程思想
c++大學教程
c++程序設計語言
數據結構演算法與應用c++語言描述
c++標准模板庫------自修教程與參考手冊
泛型編程與STL
深度探索c++對象模型
設計模式---可復用面向對象軟體的基礎
重構---改善既有代碼的設計
Essential c++
Effective c++
More Effctive c++
C++ primer
前五本應該屬於入門書籍,後面的屬於學習難度比較大的,想提高C++的編程能力,看看這些書籍有好處。建議你把編程思想這本書多看看。多做練習題,對提高編程水平的幫助是很大的。
其實語言是相通的,一門語言學會了,學習其他語言就比較容易了。
業界有這樣一種說法,因為JAVA這門語言包含了C++的一些特性,掌握了C++,就等於掌握了JAVA的80%,
在掌握了C++之後(我說的掌握指的是,可以熟練用C++編程序了,並沒有要求你完全掌握C++的所有部分,沒有人能達到這一點,因為C++太龐大了,如果能堅持不懈的學習C++兩年到三年的時間了,你就可以學習其他的語言了)可以試著學習一些其他的語言,如JAVA,VC++等等比較復雜的語言.
這時候可以說你已經對程序設計語言有個大體的認識了,可以明確自己學習的方向,根據自己的學習情況而定,是學習一些自己比較感興趣的語言啊(從興趣出發),還是為了找工作啊,開始進行更深入的學習.比如學習windows下的框架編程和編程等等比較復雜的語言.
如果是為了找工作的話你一定學好C,C++,JAVA三門語言.
在我國目前的軟體開發行業中,C,C++,JAVA的需求量是非常大的.
好了,說了這么多,可以參考一下,為自己做個學習計劃,要對自己有信心,最後祝你在學習編程的道路上走的更好更遠,祝你學有所成!!
5.計算機網路技術的推薦書籍
如果想對網路有個清晰、全面的認識,可以閱讀三本書籍:
第一本就是潘愛民翻譯的Andrew S.Tanenbaum的《計算機網路》,此書講明白了網路之道,即計算機網路通信的主要原理;
第二本是W.Richard Stevens的《TCP/IP詳解卷一:協議》,此書講明白了網路之術,即TCP/IP協議簇的工作過程;
第三本是Douglas E.er的《計算機網路與網際網路》,此書嘗試在更廣泛意義上解答「計算機網路和網際網路是如何工作的」這一基本問題,解釋了協議是如何使用硬體和應用是如何使用協議來滿足用戶的需求。
6.推薦計算機基礎知識學習的書籍
1、《計算機基礎(第二版)》——姜岩、王秀玲
本書介紹了信息與計算機的基礎知識、Windows XP操作系統的基本操作和基本使用知識、Word
2003文字處理軟體的基本知識、Excel 2003電子表格處理軟體的基本知識和PowerPoint 2003文檔
演示軟體等知識做了簡單的介紹。
2、《計算機應用基礎》 ——劉錫軒、丁恆、侯曉音
本書是為非計算機專業類學生提供計算機一般應用所必需的基礎知識、能力和素質的課程。本書滿
足普通高等院校培養「應用型人才」的教學宗旨,內容豐富,與時俱進,實用性強。
3、《計算機應用基礎》——楊飛宇,孫海波
本書主要介紹了計算機組裝與維護、計算機網路技術、電子文檔製作、電子報表製作和演示文稿制
作。
4、《計算機應用基礎》——張 明、王 翠、張和偉
本書採用任務驅動的方式進行編寫,內容強調操作性和實用性。全書涵蓋計算機基礎知識、
Windows XP操作系統、Word 2003文字處理軟體、Excel 2003電子表格處理軟體和PowerPoint
2003演示文稿製作軟體等內容。
5、《深入理解計算機系統》————布賴恩特
本書主要介紹了計算機系統的基本概念,包括最底層的內存中的數據表示、流水線指令的構成、虛
擬存儲器、編譯系統、動態載入庫,以及用戶應用等。書中提供了大量實際操作,可以幫助讀者更
好地理解程序執行的方式,改進程序的執行效率。
6、《計算機應用基礎》——武馬群
本書主要介紹了計算機基礎知識、操作系統Windows XP、網際網路(Inter)應用、文字處理軟體
Word 2003應用、電子表格處理軟體Excel 2003應用、多媒體軟體應用、演示文稿軟PowerPoint
2003應用等內容。
❷ 求C++ 網路編程最好的書籍 謝謝了
C++程序設計之四書五經(上篇)
C++是一門廣薯芹閉泛用於工業軟體研發的大型語言。它自身的復雜性和解決現實問題的能力,使
其極具學術研究價值和工業價值。和C語言一樣,C++已經在許多重要的領域大獲成功。
然而,一個不可否認的現實是,在低階程序設計領域,C++擠壓著C同時也在承受著C的強烈
反彈,而在高階程序設計領域,Java和C#正在不斷蠶食著C++的地盤。也許C++與C合為一體
永遠都是一個夢想,也許Java和C#的狂潮終將迫使C++回歸本位 — 回到它有著根本性優勢
的開發領域:低級系統程序設計、高級大規模高性能應用設計、嵌入式程序設計以及數值
科學計算等。果真如此,我認為這未嘗不是一件好事。
C++吸引如此之多的智力投入,以至於這個領域的優秀作品,包括重量級的軟體產品、程序
庫以及書籍等,數不勝數。文題「C++程序設計之四書五經」一個不太嚴格的含義是:C++
程序設計之四書 ⅹ 五經。是的,在本文(及其下篇)中,我將分門別類推薦20多本C++好
書,你可以根據自己的需要選讀。
TCPL和D&E
TCPL和D&E分別是《The C++ Programming Language》和《The Design and Evolution of
C++》的簡稱,均出自Bjarne Stroustrup之手。我將它們單列出來,首先是因為Bjarne是
C++語言的創建者,然後是因為數裂比「首先」那個原因更重要的原因:這兩本書是C++領域毋
庸置疑的傑作。說它們是C++語言聖經,並不為過。
Bjarne Stroustrup, The C++ Programming Language (Special 3rd Edition)
《C++程序設計語言(特別版)》,機械工業出版社
《C++程序設計語言(特別版)(英文影印版)》,高等教育出版社
迄今為止,TCPL是除了C++標准文獻之外最權威的C++參考手冊。和大多數人的看法不大一
樣,我認為Bjarne的文字語言並不遜色於他所創建的程序語言,至少我喜歡這種學院氣息
濃厚的作品。本書對C++語言的描述輪廓鮮明、直截了當。它從C++語言創建者的角度來觀
察C++,這是任何別的作者和書籍做不到的 — 沒有任何人比Bjarne自己更清楚該怎麼來使
用C++。
這是一本嚴肅的著作,以中、高級C++開發人員為目標讀者。如果你是一名有經驗的C++程
序員,需要了解更加本質的C++知識,本書正是為你而寫。它不是那種讓你看了會不斷竊喜
的小書,需要用心體會,反復咀嚼。在閱讀過程中,請特別留心Bjarne先生強調了什麼,
又對什麼一語帶過。我個人比較喜歡這本書的第四部分「使用C++做設計」,這樣的內容在
類似的程序設計語言書籍中很難看到 — 我甚至認為Bjarne應該將這部分獨立出來單獨寫
一本書。
Bjarne Stroustrup, The Design and Evolution of C++
《C++語言的設計和演化》,機械工業出版社
《C++語言的設計和演化(英文版)》,機械工業出版社
D&E是一本關於C++語言設計原理、設計決策和設計哲學的專著。它清晰地回答了C++為什麼
會成為今天這個樣子而沒有變成另外一種語言。作為C++語言的創建者,Bjarne淋漓盡致地
展示了他獨到而深刻的見解。除了廣受贊譽的語言特性外,Bjarne沒有迴避那些引起爭議
的甚至被拒絕的C++特性,他一一給出了邏輯嚴密、令人信服的解釋。內容首賣涵蓋C++的史前
時代、帶類的C、C++的設計規則、標准化、庫、內存管理、多重繼承、模板等,對包括異
常機制、運行時類型信息和名字空間在內的重要的新特性都分別進行了深入探討。每一名
C++程序員都應該可以從Bjarne的闡釋中加深對手中這門語言的認識。
需要再次提醒的是,這兩本書知識濃縮,信息量極大,請不要錯過Bjarne每一句看似漫不
經意的話。
入門教程
學習任何一門語言都需要一個從入門到精通、從新手到高手循序漸進的過程。不過,對於
一個所謂的新手而言,究竟是一個完完全全的新手,還是一個熟悉某種別的語言的「新手
」,甚至是在某種語言程序設計領域已經頗有建樹的高手,很難一概而論?不同的C++新手
需要不同的入門書籍。
Andrew Koenig, Barbara E. Moo, Accelerated C++: Practical Programming by Examp
le
《Accelerated C++中文版》,中國電力出版社
和市面上大多數C++教程不同,本書不是從「C++中的C」開始講解,而是始於地道的C++特
性。從一開始就使用標准庫來寫程序,隨著講述的逐漸深入,又一一解釋這些標准庫組件
所依賴的基礎概念。另外,和其他C++教材不同的是,這本書以實例拉動語言和標准庫的講
解,對後兩者的講解是為了給實常式序提供支持,而不是像絕大多數C++教材那樣,例子只
是用作演示語言特性和標准庫用法的輔助工具。
作者在C++領域的編程實踐、教育培訓以及技術寫作方面都是世界一流水準。我喜歡這種大
量使用標准庫和C++語言原生特性的清新的寫作風格。在這本教材面前,幾乎迄今為止的所
有C++教材都黯然失色或顯得過時。盡管這本教材也許對於國內的高校教育來說有些前衛,
不過我仍然極力向我的同行們推薦。順帶一提,在Bjarne和我最近的一封通信里,他這樣
評價本書:對於有經驗的程序員學習C++而言,這本書可能是世界上最好的一本。
Stanley B.Lippman, Josee Lajoie, C++ Primer (3rd Edition)
《C++ Primer (3RD)中文版》,中國電力出版社
這本書的名字多少有點讓人誤解。盡管作者聲稱這本書是為C++新手而寫,但無論是它的厚
度還是講解的深度都暴露了似乎並非如此。也許說它是一本「從入門到精通」的C++教程會
更合適一些。我個人認為它並不適合完全不懂C++的初學者 — 在閱讀這本書之前,你至少
應該先有那麼一點C或C++的背景知識,或者至少要具有一些其他語言的編程經驗。
盡管這本書省略了一些高級C++特性的討論,但仍然可以稱得上是迄今為止最全面的C++學
習教程。事實上,如果一名C++初學者能夠扎扎實實地讀完本書並對照《C++ Primer Answ
er Book》完成全部習題的話,他的水平肯定可以進入職業C++程序員的行列。我個人認為
,即使你已經擁有了TCPL,這本書依然有擁有的價值,因為在許多方面它比TCPL來得更詳
細、更易懂。
Stanley B. Lippman, Essential C++
《Essential C++中文版》,華中科技大學出版社
《Essential C++(影印版)》,中國電力出版社
可以不太嚴格地認為這本書是《C++ Primer》的精簡版。本書一一講述了C++中最具代表性
的主題,包括過程式編程、泛型編程、基於對象編程、面向對象編程、模板編程以及異常
處理等。Stanley將門檻調低到「具有其他語言程序設計經驗」的C++新手所能接受的最基
本的層次,使他們能夠迅速開始使用C++編程而又免於閱讀《C++ Primer》那樣的大部頭。
它以實例引導學習,力圖使讀者在最短的時間內把握C++的精粹。
也許換一個人來概述C++編程范型(paradigm)的方方面面需要好幾百頁才能說清楚,但這
本小書不可思議地做到了這一點。我個人非常喜歡這種滿是技術、簡明扼要並且「有話好
好說」的書。這本書同樣具有一個明顯的風格:所有程序例子全部採用標准庫組件,讓人
耳目一新。
以上三本書都不是為了完完全全的編程新手而寫。完全的C++編程新手可以閱讀Francis G
lassborow的新書(尚未出版):《A Beginners Introction to Computer Programmin
g : You Can Do It!》。這也是Bjarne的推薦。Francis Glassborow是ACCU主席,多年來
他對幾乎每一本C++經典名著評頭論足,他自己的這一本自然會引起C++社群的極大興趣。
高效、健壯編程
兩年前我在負責一個省級電力調度系統項目時編寫了一個網關程序,它從SCADA系統獲取電
力實時信息。通訊介面採用了不常用的資料庫直連方式(這個網關程序一端連接SQL Serv
er 6.5,另一端連接Oralce 8.1.6)。由於實時測點近萬,每次將全部取樣更新或插入一
遍顯然是低效的。我在網關程序里建了一個內存庫,獲取到的數據首先在其中進行比較,
然後決定是否更新物理資料庫(同時還做了別的更復雜的事情……),從而在效率和資源
佔用兩方面達到了預期效果。
這個程序一直運行得很好,但在離開現場之後的某一天,系統管理員打來電話,說大概因
為網路故障等原因,有時這個網關程序會崩潰掉 — 它自己崩掉也就罷了,問題是它還會
把Windows 2000 Advanced Server搞成「藍屏」!坦白地說,我還從來沒看過哪個非蓄意
的程序有這個「能耐」。由於當時正忙於另外一個大項目,無法去現場調試,最後只有憑
經驗對內存庫代碼小心翼翼地封裝以異常處理代碼(同時也做了一些別的修改……)。這
樣,雖然沒有徹底解決問題,但程序終究不再死得那麼難看了。
在這兒講這么一段花絮有什麼意思呢(當初為那個可怕的bug朝思暮想時我可不認為這是一
個「花絮」)?我想說的是,對於任何軟體而言,離開強健,效率也就無從談起。而對於
C++程序員來說,也許編寫一個高效的程序並不難,但要編寫一個需要7 ⅹ 24小時持續運
行的服務端軟體就不是那麼容易了,需要考慮許多因素,有時這些因素甚至遠遠超出C++語
言和開發工具的本身。作為一名開發實際項目軟體的程序員,並非非得自己碰釘子才能積
累經驗,只要我們足夠虛心,別人的經驗往往都是我們很好的借鑒。鑒於此,我推薦以下
幾本書供你選讀,它們可以讓你從強健和效率兩方面受益(當然了,它們涵蓋的內容遠不
限於異常處理J)。
Scott Meyers, Effective C++: 50 Specific Ways to Improve Your Programs and Des
ign (2nd Edition)
Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Des
igns
《Effective C++中文版》,華中科技大學出版社
《More Effective C++中文版》,中國電力出版社
《Effective C++(影印版)》,中國電力出版社
如果說《Effective C++》主要討論C++中一些相對基礎的概念和技巧的話,那麼《More E
ffective C++》則著重探討了包括異常處理在內的一系列高級技術。與前者相比,後者具
有兩大主要區別:其一,它包含很多時新的標准C++的內容;第二,它討論的主題傾向於「
戰略化」而非「戰術化」,並且討論得更深入、更徹底。尤其是對虛析構函數、智能指針
、引用計數以及代理類(proxy classe)等技術和模式論述的深入程度,讓人很難想像是
出現於這樣的一本小書之中。
游刃有餘的技術,高超的寫作技巧,Scott無疑是世界上最優秀的C++技術作家之一。在簡
潔、清晰、易讀等方面,這兩本書都卓爾不群。總之,Scott提供的這85個可以改善編程技
術和設計思維的方法,都是中、高級C++程序員必備的技能。我強烈推薦這兩本書(實際上
還有一本,稍後就會看到)。
Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, an
d Solutions
Herb Sutter, More Exceptional C++: 40 New Engineering Puzzles, Programming Pro
blems, and Solutions
《Exceptional C++中文版》,中國電力出版社
《More Exceptional C++中文版》,華中科技大學出版社
你自認為是一名C++語言專家嗎?讀一讀ISO C++標准委員會秘書長的這兩本書再回答。在
這兩本書中,Herb採用了「問答」的方式指導你學習C++語言特性。對於每一個專題,Her
b首先合理地設想出你的疑問和困惑,接著又猜測出你十有八九是錯誤的解答,然後給你以
指點並提出最佳解決方案,最後還歸納出解決類似問題的普適性原則。
這兩本書是典型的深究C++語言細節的著作,很薄,但內容密集,遠遠超過Scott的那兩本
書,讀起來很費腦筋 — 我個人認為它們要比Scott的書難懂得多。若要研習這薄薄的兩本
書所包含的知識,至少需要花費數月的時間!(在Scott的薦序中,他坦陳不止一次陷入G
otW問題的陷阱,你應該知道這意味著什麼)對於語言細節的深究有什麼好處呢?盡管在大
多數情況下,我們不必關心C++代碼幕後的動作,然而當我們不得不關心時,這兩本書可以
為我們提供很好的線索,因為它們揭示了C++語言中微妙而又至關重要的東西。
Stephen C. Dewhurst, C++ Gotchas: Avoiding Common Problems in Coding and Desig
n
《C++程序設計陷阱》,中國青年出版社
Stephen的理論素養和實踐經驗註定這是一本值得一讀的好書。Stephen曾經是貝爾實驗室
中第一批C++使用者。他已經使用C++成功解決了包括編譯器、證券交易、電子商務以及嵌
入式系統等領域中的問題。本書匯集了作者來自開發一線的99條編程真知灼見,洞悉它們
,你可以避免幾乎所有常見的C++設計和編程問題。
我甚至認為,對於C++編程菜鳥而言,閱讀這本書會比閱讀Scott和Herb的書更能輕松而立
竿見影地獲得更大的提高。我個人很喜歡這本書的寫作風格 — Stephen的許多觀點看似極
端卻無可辯駁。當然了,這種自信(以及冷幽默)來自於作者深厚的技術素養,而非自大
的偏執。
除了上面推薦的書籍外,Dov Bulka和 David Mayhew合著的《Efficient C++: Performan
ce Programming Techniques》(《提高C++性能的編程技術》,清華大學出版社)也值得
一看。這本超薄小書聚焦於高性能C++應用程序開發。兩位作者都是IBM軟體專家,都工作
於對性能要求極高的系統構建領域,本書是他們的經驗之談。也有人不喜歡這本書,因為
它花了不少的篇幅講述和C++無關的東西,我卻恰恰因為這一點而對這本書產生好感,正是
這些東西讓我開闊了眼界。
模板和泛型編程
模板和基於模板的泛型編程無疑是當今發展最活躍的C++程序設計技術。模板的第一個革命
性的應用是STL,它將模板技術在泛型容器和演算法領域的運用展現得淋漓盡致,而Boost、
Loki等現代程序庫則將模板技術的潛能不斷發揮到極致。在模板和泛型編程領域,我推薦
以下兩本重量級著作:
David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide
《C++ Templates全覽(繁體版)》,台灣碁峰資訊股份有限公司
《C++ Templates全覽(簡體版)》,人民郵電出版社
有一種老套的贊美一本書的手法,大致是「沒有看過這本書,你就怎麼怎麼地」,這裡面
往往誇張的成分居多。不過,倘若說「沒有看過《C++ Templates: The Complete Guide》
,你就不可能精通C++模板編程」,那麼這個論斷對於世界上絕大多數C++程序員來說是成
立的。
這本書填補了C++模板書籍領域由來已久的空白。此前,上有《Modern C++ Design》這樣
的專注於模板高級編程技術和泛型模式的著作,下有《The C++ Standard Library》這樣
的針對特定模板框架和組件的使用指南。然而,假如對模板機制缺乏深入的理解,你就很
難「上下」自如。鑒於此,我向每一位渴望透徹理解C++模板技術的朋友推薦這本書。
這本書在內地、台灣各有一個譯本,但出自不同的譯者之手。當你看到這篇文章時,兩個
譯本應該都已經上市,對於讀者來說當然也就多了一種選擇。侯捷先生個人網站上開放了
繁體譯本大部分章節,不妨先睹為快。
Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Pattern
s Applied
《C++設計新思維:泛型編程與設計模式之應用》,華中科技大學出版社
《C++設計新思維(影印版)》,中國電力出版社
你自認為是C++模板編程高手嗎?請看過這本書再回答J 這是一本出自天才之手令人敬畏的
傑作。泛型模式,無限延伸你的視野,足以挑戰任何一名C++程序員的思維極限。
這本書共分為兩大部分,第一部分討論了 Loki程序庫採用的基礎技術以及一些高級語言特
性,包括基於策略的類設計、模板局部特化、編譯期斷言、Typelist以及小型對象分配技
術等。第二部分則著重介紹了Loki中的重要組件和泛型模式技術,包括泛化仿函數(Gene
ralization Functor)、單件(Singleton)、智能指針、對象工廠(Object Factory)、
抽象工廠(Abstract Factory)、訪問者(Visitor)以及多方法(Multimethods)等。每
一種技術都讓人大開眼界,嘆為觀止。
在C++的學習方面,過猶不及往往成了不求甚解的借口。然而,面向對象並非C++的全部,
模板和泛型編程亦佔半壁江山。對於「嚴肅」的C++程序員而言,及時跟進這項早經例證的
成功技術,不失為明智之舉。
結語
這些著作是如此大名鼎鼎,也許根本不缺我一個推薦。然而,縱然C++程序員隊伍的發展壯
大速度不像其他更時髦的語言那樣迅速,新人進總是多於舊人出。除了熱忱地歡迎新人,
我個人認為到了對C++書籍進行「盤點」的時候了,並且希望這樣的「盤點」有益於感興趣
的讀者。請保持耐心和寬厚。在下篇中,我將繼續介紹標准庫、網路編程以及其他方面的
C++好書。有好書相伴,這個冬天不會冷。
C++程序設計之四書五經(下篇)
我在上篇中「盤點」了TCPL和D&E以及入門教程、高效和健壯編程、模板和泛型編程等方面
共十幾本C++好書。冬去春來,讓我們繼續C++書籍精彩之旅J
標准庫
當我還在研究院工作時,與同院另外兩家研究所合作開發過一個大型水利樞紐調度集成項
目。我們三家軟體系統之間都要相互通信。在調試通訊模塊時,細心的客戶(一名好學的
系統管理員)發現對於同一通信規約的解釋代碼,我的不超過30行,而對方的則超過了15
0行且很難看懂。這位系統管理員很納悶,我說大家編程風格和習慣不一樣,我使用了標准
庫,而他使用了傳統C編程風格以及他所習慣的另外一些技術。
別誤會!我絕無貶低這位合作夥伴的意思。事實上,我對那些真正有著深厚的C編程功力的
程序員常常懷有欽佩之心。畢竟,C++能有今天的成功在很大程度上緣於它深深地植根於C
。作為一名C++程序員,倘若不熟悉C++中的C,我往往會認為他的基本功是不扎實的,他的
技術底氣是不足的。
不過話又說回來,C++是一種多范型(paradigm)編程語言,具體採用哪種編程風格,專業
程序員應該知道視具體情況而定。作為一名經常需要在現場做即興開發的項目負責人,為
了短平快地解決當務之急,我習慣盡量採用現有的庫(和組件)。效率(以及強健性)久
經驗證的C++標准庫已經擺在那兒了,何樂而不用呢?
Nicolai M. Josuttis, The C++ Standard Library: A Tutorial and Reference
《C++標准程序庫:自修教程與參考手冊》,華中科技大學出版社
這是一本網路全書式的C++標准庫著作,是一本需要一再查閱的參考大全。它在完備性、細
致性以及精確性方面都是無與倫比的。本書詳細介紹了每一標准庫組件的規格和用法,內
容涵蓋包括流和本地化在內的整個標准庫而不僅僅是STL。正如本書副標題所示,它首先適
合作為教程閱讀,爾後又可用作參考手冊。
淺顯易懂的寫作風格使得這本書非常易讀。如果你希望學習標准庫的用法並盡可能地發揮
其潛能,那你必須擁有這本書。正如網路上所言,這本書不僅僅應該擺在你的書櫥中,更
應該放到你的電腦桌上。我向每一位職業C++程序員強烈推薦。
Angelika Langer, Klaus Kreft, Standard C++ IOStreams and Locales: Advanced Pro
grammer's Guide and Reference
《標准C++輸入輸出流與本地化》,人民郵電出版社
C++標准庫由STL、流和本地化三部分構成。關於STL的書市面上已經有不少,但罕見流和本
地化方面的專著。本書是這兩個領域中最優秀的一本,迄今為止沒有任何一本書比這一本
更全面詳盡地討論了流和本地化。如果你不滿足於停留在「會用」流庫的層面,千萬不要
錯過它。
2001年夏天,我草草翻閱過這本書的中文版,從內容到包裝都給我留下了比較深刻的印象
— 不過負面的居多一些。2003年秋天,無意中得知某網路書店正以超低價格甩賣這本書
的中譯本,情不自禁,一陣唏噓。
Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Stand
ard Template Library
《Effective STL(影印版)》,中國電力出版社
讀完Scott 的《Effective C++》和《More Effective C++》的中譯本之後,我一直期待這
本書的中文版。我從潘愛民先生的個人主頁上了解到,他和他的合作夥伴似乎早已完成了
這本書的翻譯工作,可惜至今市面上仍不得見。幸運的是,我們可以看到它的原版。
本書是使用STL的程序員必讀之作。在這本書中,Scott向我們講述STL容器和演算法的工作機
制以及如何以最佳方式使用它們。和Scott的其他作品一樣,這本書的寫作風格清晰、精確
,具有極佳的可讀性。看過這本書以後,我想你也許會和我以及其他C++程序員一樣產生這
樣的想法:Scott什麼時候會寫出一本「More Effective STL」?
關於STL,我還提醒你留心Matthew H. Austern的《Generic Programming and the STL:
Using and Extending the C++ Standard Template Library》(《泛型編程與STL》,中
國電力出版社)。這本書散發著濃厚的學院氣息。Andrew Koenig和Barbara Moo在《Acce
lerated C++: Practical Programming by Example》一書末尾鄭重推薦另外兩本進階好書
(除了他們自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本書!
網路編程
在網路編程時代,C++應該扮演著怎樣的角色,讓ACE(Adaptive Communications Enviro
nment)來告訴你。
Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 1: Mast
ering Complexity with ACE and Patterns
Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 2: Syst
ematic Reuse with ACE and Frameworks
《C++網路編程,卷1:運用ACE和模式消除復雜性》,華中科技大學出版社
《C++網路編程,卷2:基於 ACE 和框架的系統化復用》,電子工業出版社
採用C++進行企業級網路編程,目前ACE(以及這兩本書)是一個值得考慮的選擇。ACE是一
個面向對象、跨平台、開放源碼的網路編程框架,目標在於構建高性能網路應用和中間件
。Douglas是ACE的創始人,Stephen則已為ACE提供了數年的技術支持和顧問服務,兩位都
是ACE社群(是的,ACE的影響和實際應用的程度已經形成了一個社群)的專家。
ACE並不單單被大學和研究所追捧,它已經被成功地應用於世界上成千上萬個商業應用中。
在電信、宇航、醫葯和財經領域的網路系統中,ACE已經並繼續發揮著重要的作用。如果你
准備開發高性能通訊系統,你應該考慮考慮這一匯集世界頂尖專家智慧的成果。
除了使用C++面向對象設計技術和模板等高級語言特性外,ACE還運用了大量的模式。《C+
+網路編程》卷1和卷2並不僅僅教你關於ACE的方方面面,它還會教給你模式和通用框架設
計等高級技術等。所以,作為一名中、高級C++程序員,即使你很少進行正兒八經的C++網
絡程序設計,閱讀這兩本書同樣可以從中受益。
是的,並非所有網路應用都要使用Web伺服器(以及其他應用伺服器)和重量級組件模型,
換個思路,它們或許也可以從輕量級的ACE組件中獲益。
雜項
以下這幾本書之所以被列入「雜項」單元,只是因為我沒有考慮出更合適的歸類方法,它
們和上面的書籍一樣,值得一讀。
Bruce Eckel, Thinking in C++, Volume 1: Introction to Standard C++ (2nd Edit
ion)
Bruce Eckel, Thinking in C++, Volume 2: Practical Programming (Second Edition)
《C++編程思想(第2版)第1卷:標准C++導引》,機械工業出版社
《C++編程思想(英文版 第2版)》,機械工業出版社
《Thinking in C++》的第1版於1996年榮獲「軟體研發」雜志評選的圖書震撼大獎。最新
推出的第2版對內容進行了大幅改寫和調整,以反映C++標准化帶來的影響以及近幾年面向
對象領域最新研究和實踐成果。「輸入輸入流」、「多重繼承」、「異常處理」和「運行
時類型識別」等高級主題連同C++標准化以後增加的一些內容則被放入第二卷中。Bruce是
一名經驗豐富的C++講師和顧問,其培訓和寫作經驗都是世界一流水準,他的作品比那些「
玩票」的技術人員寫的東西更能吸引讀者。事實上,在同類圖書中,對於大多數讀者而言
,這本書的可讀性要超過TCPL和《C++ Primer》。順帶一提,訪問作者的站點,你可以先
睹第二卷的風采。
Andrew Koenig, Barbara E. Moo, Ruminations on C++: A Decade of Programming Ins
ight and Experience
《C++沉思錄》,人民郵電出版社
Andrew是世界上屈指可數的C++專家。這是一本關於C++編程思想和程序設計技術而非語言
細節的著作。如果你已經具有一定的基礎,這本書將教你在進行C++編程時應該怎樣思考,
應該如何表達解決方案。整本書技術表達透徹,文字通俗易懂。Bjarne這樣評價這本書:
本書遍布「C++是什麼、C++能夠做什麼」的真知灼見。
Stanley B. Lippman, Inside The C++ Object Model
《深度探索C++對象模型》,華中科技大學出版社
《深度探索C++對象模型(影印版)》,中國電力出版社
從編譯器的角度觀察C++可以使你知其然並知其所以然。本書探討了大量的C++面向對象程
序設計的底層運作機制,包括構造函數、函數、臨時對象、繼承、虛擬、模板的實例化、
異常處理、運行期類型識別等,另外還介紹了一些在實現C++對象模型過程中做出的權衡折
衷。喜
❸ 網路編程的參考書籍
《Windows網路編程技術》(推薦指數:五星)中文版高清PDF格式 486頁 ,極力推薦,含目錄書簽,是一本內容豐富,講解詳細的Windows網編。
《TCP/IP詳解》共三卷,《TCP/IP詳解卷1:協議》描述了屬於每一層的各個協議以及它們如何在不同操作系統中運行。作者LawrenceBerkeley實驗室的tcpmp程序來捕獲不同操作系統和TCP/IP實現之間傳輸的不同分組。對tcpmp輸出的研究可以幫助理解不同協議如何工作。
《C++網路編程 卷1》 《C++網路編程,卷2》本書將向你描述這些框架的設計,以及它們可怎樣幫助你克服較低級的本地操作系統API與較高級的分布式計算中間的各種局限,高效地開發出高質量、可移植的C++網路化應用。
《Unix網路編程》本書是一部UNIX網路編程的經典之作。附錄中給出了測量各種IPC形式性能的方法。本書內容詳盡且具權威性,幾乎每章都提供精選的習題,並提供了部分習題的答案,是網路研究和開發人員理想的參考書。