導航:首頁 > 程序命令 > 程序員菜鳥必讀書

程序員菜鳥必讀書

發布時間:2023-03-19 02:31:17

『壹』 程序員必讀的經典書籍

程序員需要學習的知識地很多的,需要不斷的看書學習,才能不斷的提升自己。下面是由我給大家帶來關於程序員必讀的書籍,希望對大家有幫助!

程序員必讀的書籍
1.重構:改善既有代碼的設計(軟體開發的不朽經典)

何為重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。本書雖然使用java語言書寫示例代碼,但是其概念與思想同樣適合 於其他語言。書中,作者以一些平淡無奇,甚至帶有壞味道的代碼開始,一步一步地修改轉變成更加靈活,可重用的代碼。通過書中的示例,你會清楚地明白什麼才 是整潔的代碼。重構其實依然成為 經驗 豐富的程序員的必備技能,當你想要改善重構代碼時,讀一讀這本書就會讓你有章可循,豁然開朗。

2.代碼整潔之道(Robert C. Martin力作,韓磊獻譯)

這是我最喜歡的一本書,不止一次我將它推薦給我的同事,讀者還有學生。我認為它可以稱得上軟體開發與編碼方便最好的一本書。Bob大叔我想無需做介紹,他寫 過一個關於敏捷開發的系列書籍,我的書架上就有他的 《代碼整潔之道》 , 《程序員的職業素養》 , 《敏捷軟體開發(原則模式與實踐)》 , 《敏捷軟體開發(原則模式與實踐)》 , 《UML for Java For Programmers》 , 《Extreme Programming in Practice》等這些書籍。雖然他的這些書有點老舊,但是這些書仍然很有價值,縱使數十年之後,這些書依舊受用,尤其是在面向對象編程方面。 本書不僅僅是告訴你要做什麼,還教會你什麼不能做。書中有關於代碼味道的一個章節,全面列舉了大多數程序員遇到的各種錯誤,其後的章節則詳細描述如何糾正 這些錯誤。比如如何將過長的switch聲明轉換成遵循開放閉合原則的模型,如何利用集成和多態。再次啰嗦一下,這本書確實值得每個程序員擁有。和上本書 一樣,書中的例子使用Java語言,但依然適合使用其他面向對象編程語言的開發者閱讀。想要擼的一手好碼,這本書必不可少。

3.代碼大全

兩屆Software Jolt Award震撼大獎得主!軟體開發世界的地圖,經典中的經典

想必這本書大家都曾閱讀過,這就是鼎鼎大名的《代碼大全》,從某個角度看,它其實就是C++版的《代碼整潔之道》。本書的目標就是幫開發者使用 做高質的代碼寫出更好的軟體。同樣書中也涉及了編程中常見問題和最佳實踐。這本書也可以稱得上是必讀書籍,尤其是對於C和C++程序員。《代碼大全(第2 版)》中所論述的技術不僅填補了初級與高級編程實踐之間的空白,而且也為程序員們提供了一個有關軟體開發技術的信息來源。《代碼大全(第2版)》對經驗豐 富的程序員、技術帶頭人、自學的程序員及沒有太多編程經驗的學生都是大有裨益的。可以說,只要您具有一定的編程基礎,想成為一名優秀的程序員,閱讀《代碼 大全(第2版)》都不會讓您失望。

4.單元測試的藝術

世界級軟體開發大師,設計模式和敏捷開發先驅,「Bob大叔」Robert C. Martin強力推薦

如果非要做一件改善項目,提高開發者水平的事情,我想那就是讓開發者掌握單元測試的能力。對於專業的開發者來說,單元測試是一項必備的技能,多數的程序員 卻不具備TDD(測試驅動開發)的能力。我雖然在不太遵循TDD這種模式,但是也會為自己寫的或維護的代碼編寫單元測試。對於工程來說,開源項目基本都嚴 格遵守執行單元測試,而很多商業的工程則在單元測試方面有所缺失。一個擁有單元測試的項目會變得更加容易維護和更改。本書會介紹成功的項目與失敗項目的差 別,可維護的代碼庫與不可維護的代碼庫之間的區別。本書示例為.NET代碼,但這並不會影響你了解單元測試。如果你是一名技術負責人或者項目負責人,這本 書可以幫你更好地把控項目代碼質量。如果你看Java更舒服的話,也可以看一看這本書 《JUnit實戰(第2版)》 。

5.精益軟體開發管理之道

《精益軟體開發管理之道》是一本軟體開發 方法 學的書。作者從24個不同的視角,在更大的空間、時間、行業、 文化 背景下,考察了敏捷和精益方法。 《精益軟體開發管理之道》詳細闡述了敏捷和精益開發方法取得成功的深層原因。《精益軟體開發管理之道》包括以下內容:系統思考,以適當足夠的方式關注客 戶;技術傑出,介紹了傑出軟體開發的基礎-低耦合的架構、測試驅動的開發過程等;可靠交付,討論了工作流和日程計劃,以及反饋的重要作用;無情改進,討論 了所有精益組織的基本特點:持續不斷、永不滿足的改進;卓越的人,卓越的結果來自於卓越的人;一致的領導,討論在領導團隊中達成一致。

6.設計模式:可復用面向對象軟體的基礎

這本書要麼你讀過,要麼就是聽說過,這就是經典的GOF(Gang of Four 中文譯為_)設計模式一書。該書作者為四人,分別是Eric Gamma, Richard Helm, Ralph Johnson, 和John Vissides。四位頂尖的面向對象領域專家精心選取了最具價值的設計實踐,加以分類整理和命名,並用簡潔而易於重用的形式表達出來。本書已經成為面向 對象技術人員的聖經和詞典,書中定義的23個模式逐漸成為開發界技術交流所必備的基礎知識和語匯。使用這些設計模式,我們可以設計出靈活,優雅和可重用的 可擴展的設計。

7.細說PHP

51CTO「最受讀者喜愛的原創IT技術圖書」獎

《細說PHP》編寫的宗旨是讓讀者能擁有一本PHP方面的學習和開發使用的最好書籍,對所羅列出的每個知識點都進行了細化和延伸,並力求講解到位,讓讀 者可以輕松地讀懂。對於幾乎每個知識點都有對應且詳實的可運行的代碼配套,對所有實例代碼都附有詳細注釋、說明及運行效果圖。另外在每個章節的最後還為讀 者安排了大量的和本章知識點配套的授課課件及自測試題(附加在光碟中),能更好地幫助讀者掌握理論知識點,提高實際編程能力,寓學於練。對於入門與提高 PHP技術起到關鍵作用。

《細說PHP》作者高洛峰。現任北京LAMP兄弟連[1](易第優 教育 )教學總監,五年軟體開發工作經驗,四年IT教學工作經驗。曾在多家上市企業擔任過技 術總監、項目經理、高級軟體工程師等職務,具有扎實的技術功底。國內資深的高級技術認證講師,從事IT培訓以來累計授課長達6000課時以上,培訓近千名 學員成功走向IT崗位,具有豐富的IT教學經驗。
程序員的專業技術書
1、《數學之美》第二版

獲獎暢銷書《數學之美》第一版榮獲國家圖書館第八屆文津圖書獎。

第一版入選廣電總局「2014年向全國青少年推薦百種優秀圖書書目」,榮獲2012-2013年度全行業優秀暢銷書。

信息領域大學生必讀好書,央視新聞推薦的學科敲門磚。

新版增加了大數據和機器學習等最新內容,以滿足人們對當下技術的學習需求;同時,根據專家和讀者的反饋更正了錯漏,並更新了部分內容。

《數 學之美》第一版上市後深受廣大讀者歡迎,並榮獲國家圖書館第八屆文津圖書獎。讀者說,讀了《數學之美》,才發現大學時學的數學知識,比如馬爾科夫鏈、矩陣 計算,甚至餘弦函數原來都如此親切,並且栩栩如生,才發現自然語言和信息處理這么有趣。而今,數學在信息產業中的應用越來越廣泛,因此,作者在第二版中增 加了一些內容,尤其是針對大數據和機器學習的內容,以便滿足人們對當下技術的學習需求。

2、文明之光 第三冊

吳軍博士繼獲獎暢銷書《浪潮之巔》、《數學之美》之後的跨界之作

為您講述他眼中的超越上下五千年的人類文明史

隨文津獎得主一起體會科技與人文之美

作 者所選的創作素材來自於十幾年來在世界各地的所見所聞,對其內容都有著深刻的體會和認識。《文明之光》系列第三冊每個章節依然相對獨立,書中全景式地展現 了人類文明發展歷程中的多樣性。內容涉及音樂、美術、計算機、互聯網、金融、矽谷對世界科技發展的啟迪、微粒子和宇宙天文學、環境保護八個專題。

3、構建之法:現代軟體工程

「做中學 Learning By Doing」的現代方式教授軟體工程

李未院士鼎力推薦,眾多軟工教師一致好評

微軟研發總監鄒欣力作

推薦軟體工程專業學子閱讀,了解軟體工程真正內涵,懂得「工程」二字真正含義,知道軟體工程和計算機科學的區別。了解之後,就知道為何軟體工程是就業含金量較高的行業了。

書中設想了大量的場景「學」和「習」,並且用了大量的類比,非常生動有趣。這本教材也對軟體工程課老師提出了更高的要求;對學生而言,同樣面臨著要付出怎樣的努力才能學到「干貨」的選擇。

《構建之法:現代軟體工程》共分17章,對照美國ACM/IEEE2013年新出版的計算機科學教學指導 (Computer ScienceCurricula 2013)中的軟體工程相關部分,這本教材覆蓋了其中大多數Core-Tier1和Core-Tier2的內容。可以說,全書對軟體工程內容的覆蓋不遜於 任何一本現行的教材,同時講述了業界最新實踐方法。
程序員看的好書籍
1.《哥德爾、埃舍爾、巴赫》

豆瓣評分:9.4 分

作者簡介:道格拉斯·理查·郝夫斯台特,中文名侯世達,美國學者、作家。他的主要研究領域包括意識、類比、藝術創造、文學翻譯以及數學和物理學探索。 因其著作《哥德爾、埃舍爾、巴赫》獲得普立茲獎(非小說類別)和美國國家經典獎(科學類別)。

推薦理由:這是一部天書。在數學,繪畫,音樂和 故事 中暢游,卻在探討哲學中最深刻的問題:意識和靈魂如何產生,從哲學角度探討人工智慧和人類智能。當你看完書後,也許你具體記不得太多細節,但是不經意間你會發現它已經深深地影響了你的世界觀。

2.《演算法導論》

豆瓣評分:9.4 分

作者簡介:托馬斯·科爾曼,達特茅斯學院計算機科學系教授、系主任;查爾斯·雷瑟爾森,麻省理工學院計算機科學與電氣工程系教授,他目前主持 MIT 超級計算技術研究組,並是 MIT 計算機科學和人工智慧實驗室計算理論研究組的成員;羅納德·李維斯特,現任麻省理工學院電子工程和計算機科學系安德魯與厄納·維特爾比(Andrew and Erna Viterbi)教授。他是 MIT 計算機科學和人工智慧實驗室的成員,並領導著其中的信息安全和隱私中心。他現在擔任國家密碼學會的負責人;克利福德·斯坦,哥倫比亞大學計算機科學系和工業工程與運籌學系教授,他還是工業工程與運籌學系的系主任。

推薦理由:這本書深入淺出,全面地介紹了計算機演算法。對每一個演算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。本書的設計目標全面,適用於多種用途。涵蓋的內容有:演算法在計算中的作用,概率分析和隨機演算法的介紹。書中專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似演算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計演算法,以及對貪心演算法元素的討論。此書還介紹了對強連通子圖演算法正確性的證明,對哈密頓迴路和子集求和問題的 NP 完全性的證明等內容。

猜你喜歡:

1. 程序員們的專業技術書分享

2. linux程序員必看書籍推薦

3. java程序員必看的書籍推薦

4. 清華大學推薦的青少年閱讀書目

5. 文藝青年必看的書

『貳』 吳永華的博客有哪些

您好,吳永華的博客有:
1.《程序員的自我修養》:這是一本關於程序員職業素養的書,涵蓋了程序員的職業素養、職業規劃、職業發展等內容,是程序員必讀的書籍。
2.《程序芹謹員的職業發展》:這是一本關於程序員職業發展的書,涵蓋了程序員的職業發展歷程、職業發展規劃、職業發展策略等內容,是程序員必讀的書籍。
3.《程序員的技術提升》:這是一本關於程序員技術提升的書,涵蓋了程序員的技術提升方法、技術提升技巧、技困首啟術提升策略等內容,是程序員必讀的書籍。
4.《程序員的職業規劃》:這是一本關於程序員職業規劃的書,涵蓋了程序員的職業規劃方法、職業規劃技巧、職業規劃策略等內容,是程序員必讀的書籍。
5.《程序員的職業規劃實戰》:這是一本汪如關於程序員職業規劃實戰的書,涵蓋了程序員的職業規劃實戰方法、職業規劃實戰技巧、職業規劃實戰策略等內容,是程序員必讀的書籍。

『叄』 本人想學習編程,需要哪些入門書籍

1、清華大學出版社出版的《C++程序設計教程》、《C++PRIMER》、譚浩強的《程序設計書》、《Effective C++》、《More Effective C++》、《Exceptional C++》 、《More Exceptional C++》、《深入探索c++對象模型》等

2、具體怎樣學編程 :

①明確學習目的

學習編程對大多數IT業人員來說都是非常有用的。學編程,做一名編程人員,從個人角度講,可以解決在軟體使用中所遇到的問題,改進現有軟體,可以為自己找到一份理想的工作添加重要得砝碼,有利於在求職道路上謀得一個好的職位;從國家的角度,可以為中國的軟體產業做出應有的貢獻,一名優秀的程序員永遠是被爭奪的對象。

②打好基礎

(1)數學基礎 從計算機發展和應用的歷史來看計算機的數學模型和體系結構等都是有數學家提出的,最早的計算機也是為數值計算而設計的。因此,要學好計算機就要有一定的數學基礎,出學者有高中水平就差不多了。

(2)邏輯思維能力的培養學程序設計要有一定的邏輯思維能力,「邏思力」的培養要長時間的實踐鍛煉。要想成為一名優秀的程序員,最重要的是掌握編程思想。要做到這一點必須在反復的實踐、觀察、分析、比較、總結中逐漸地積累。

(3)選擇一種合適的入門語言 面對各種各樣的語言,應按什麼樣的順序學呢?

③ 注意理解一些重要概念

一本程序設計的書看到的無非就是變數、函數、條件語句、循環語句等概念,但要真正能進行編程應用,需要深入理解這些概念,在理解的基礎上應用,不要只簡單地學習語法、結構,而要吃透針對這些語法、結構的應用例子,做到舉一反三,觸類旁通。

④掌握編程思想

學習一門語言或開發工具,語法結構、功能調用是次要的,最主要是學習它的思想。例如學習 VC 就要學習 Windows 的內在機理、什麼是線程......;學習 COM 就要知道 VTALBE 、類廠、介面、idl......,關鍵是學一種思想,有了思想,那麼就可以觸類旁通。

⑤多實踐、多交流

掌握編程思想必須在編程實際工作中去實踐和體會。編程起步階段要經常自己動手設計程序,具體設計時不要拘泥於固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實踐,幫助自己提高水平。親自動手進行程序設計是創造性思維應用的體現,也是培養邏輯思維的好方法。

⑥養成良好的編程習慣

編程入門不難,但入門後不斷學習是十分重要的,相對來說較為漫長。在此期間要注意養成一些良好的編程習慣。編程風格的好壞很大程度影響程序質量。良好的編程風格可以使程序結構清晰合理,且使程序代碼便於維護。如代碼的縮進編排、變數命令規則的一致性、代碼的注釋等。

⑦上網學編程

在網上可以學到很多不同的編程思想、方法、經驗和技巧,有大量的工具和作品及相關的輔導材料供下載。例如網站「編程課堂」()主要以 VB 和 Delph;教學和交流為主,提供大量實用技巧。

⑧加強計算機理論知識的再學習

學編程是符合「理論→實踐→再理論→再實踐」的一個認識過程。一開始要具有一定的計算機理論基礎知識,包括編程所需的數學基礎知識,具備了入門的條件,就可以開始編程的實踐,從實踐中可以發現問題需要加強計算機理論知識的再學習。程序人人皆可編,但當你發現編到一定程度很難再提高的時候,就要回頭來學習一些計算機科學和數學基礎理論。

『肆』 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 Example

《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 Answer 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 Glassborow的新書(尚未出版):《A Beginners Introction to Computer Programming : You Can Do It!》。這也是Bjarne的推薦。Francis Glassborow是ACCU主席,多年來他對幾乎每一本C++經典名著評頭論足,他自己的這一本自然會引起C++社群的極大興趣。

高效、健壯編程

兩年前我在負責一個省級電力調度系統項目時編寫了一個網關程序,它從SCADA系統獲取電力實時信息。通訊介面採用了不常用的資料庫直連方式(這個網關程序一端連接SQL Server 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 Design (2nd Edition)

Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Designs

《Effective C++中文版》,華中科技大學出版社

《More Effective C++中文版》,中國電力出版社

《Effective C++(影印版)》,中國電力出版社

如果說《Effective C++》主要討論C++中一些相對基礎的概念和技巧的話,那麼《More Effective C++》則著重探討了包括異常處理在內的一系列高級技術。與前者相比,後者具有兩大主要區別:其一,它包含很多時新的標准C++的內容;第二,它討論的主題傾向於「戰略化」而非「戰術化」,並且討論得更深入、更徹底。尤其是對虛析構函數、智能指針、引用計數以及代理類(proxy classe)等技術和模式論述的深入程度,讓人很難想像是出現於這樣的一本小書之中。

游刃有餘的技術,高超的寫作技巧,Scott無疑是世界上最優秀的C++技術作家之一。在簡潔、清晰、易讀等方面,這兩本書都卓爾不群。總之,Scott提供的這85個可以改善編程技術和設計思維的方法,都是中、高級C++程序員必備的技能。我強烈推薦這兩本書(實際上還有一本,稍後就會看到)。

Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions

Herb Sutter, More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions

《Exceptional C++中文版》,中國電力出版社

《More Exceptional C++中文版》,華中科技大學出版社

你自認為是一名C++語言專家嗎?讀一讀ISO C++標准委員會秘書長的這兩本書再回答。在這兩本書中,Herb採用了「問答」的方式指導你學習C++語言特性。對於每一個專題,Herb首先合理地設想出你的疑問和困惑,接著又猜測出你十有八九是錯誤的解答,然後給你以指點並提出最佳解決方案,最後還歸納出解決類似問題的普適性原則。

這兩本書是典型的深究C++語言細節的著作,很薄,但內容密集,遠遠超過Scott的那兩本書,讀起來很費腦筋 — 我個人認為它們要比Scott的書難懂得多。若要研習這薄薄的兩本書所包含的知識,至少需要花費數月的時間!(在Scott的薦序中,他坦陳不止一次陷入GotW問題的陷阱,你應該知道這意味著什麼)對於語言細節的深究有什麼好處呢?盡管在大多數情況下,我們不必關心C++代碼幕後的動作,然而當我們不得不關心時,這兩本書可以為我們提供很好的線索,因為它們揭示了C++語言中微妙而又至關重要的東西。

Stephen C. Dewhurst, C++ Gotchas: Avoiding Common Problems in Coding and Design

《C++程序設計陷阱》,中國青年出版社

Stephen的理論素養和實踐經驗註定這是一本值得一讀的好書。Stephen曾經是貝爾實驗室中第一批C++使用者。他已經使用C++成功解決了包括編譯器、證券交易、電子商務以及嵌入式系統等領域中的問題。本書匯集了作者來自開發一線的99條編程真知灼見,洞悉它們,你可以避免幾乎所有常見的C++設計和編程問題。

我甚至認為,對於C++編程菜鳥而言,閱讀這本書會比閱讀Scott和Herb的書更能輕松而立竿見影地獲得更大的提高。我個人很喜歡這本書的寫作風格 — Stephen的許多觀點看似極端卻無可辯駁。當然了,這種自信(以及冷幽默)來自於作者深厚的技術素養,而非自大的偏執。

除了上面推薦的書籍外,Dov Bulka和 David Mayhew合著的《Efficient C++: Performance 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 Patterns Applied

《C++設計新思維:泛型編程與設計模式之應用》,華中科技大學出版社

《C++設計新思維(影印版)》,中國電力出版社

你自認為是C++模板編程高手嗎?請看過這本書再回答J 這是一本出自天才之手令人敬畏的傑作。泛型模式,無限延伸你的視野,足以挑戰任何一名C++程序員的思維極限。

這本書共分為兩大部分,第一部分討論了 Loki程序庫採用的基礎技術以及一些高級語言特性,包括基於策略的類設計、模板局部特化、編譯期斷言、Typelist以及小型對象分配技術等。第二部分則著重介紹了Loki中的重要組件和泛型模式技術,包括泛化仿函數(Generalization Functor)、單件(Singleton)、智能指針、對象工廠(Object Factory)、抽象工廠(Abstract Factory)、訪問者(Visitor)以及多方法(Multimethods)等。每一種技術都讓人大開眼界,嘆為觀止。

在C++的學習方面,過猶不及往往成了不求甚解的借口。然而,面向對象並非C++的全部,模板和泛型編程亦佔半壁江山。對於「嚴肅」的C++程序員而言,及時跟進這項早經例證的成功技術,不失為明智之舉。

結語

這些著作是如此大名鼎鼎,也許根本不缺我一個推薦。然而,縱然C++程序員隊伍的發展壯大速度不像其他更時髦的語言那樣迅速,新人進總是多於舊人出。除了熱忱地歡迎新人,我個人認為到了對C++書籍進行「盤點」的時候了,並且希望這樣的「盤點」有益於感興趣的讀者。請保持耐心和寬厚。在下篇中,我將繼續介紹標准庫、網路編程以及其他方面的C++好書。有好書相伴,這個冬天不會冷。

C++程序設計之四書五經(下篇)

我在上篇中「盤點」了TCPL和D&E以及入門教程、高效和健壯編程、模板和泛型編程等方面共十幾本C++好書。冬去春來,讓我們繼續C++書籍精彩之旅J

標准庫

當我還在研究院工作時,與同院另外兩家研究所合作開發過一個大型水利樞紐調度集成項目。我們三家軟體系統之間都要相互通信。在調試通訊模塊時,細心的客戶(一名好學的系統管理員)發現對於同一通信規約的解釋代碼,我的不超過30行,而對方的則超過了150行且很難看懂。這位系統管理員很納悶,我說大家編程風格和習慣不一樣,我使用了標准庫,而他使用了傳統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 Programmer's Guide and Reference

《標准C++輸入輸出流與本地化》,人民郵電出版社

C++標准庫由STL、流和本地化三部分構成。關於STL的書市面上已經有不少,但罕見流和本地化方面的專著。本書是這兩個領域中最優秀的一本,迄今為止沒有任何一本書比這一本更全面詳盡地討論了流和本地化。如果你不滿足於停留在「會用」流庫的層面,千萬不要錯過它。

2001年夏天,我草草翻閱過這本書的中文版,從內容到包裝都給我留下了比較深刻的印象 — 不過負面的居多一些。2003年秋天,無意中得知某網路書店正以超低價格甩賣這本書的中譯本,情不自禁,一陣唏噓。

Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard 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在《Accelerated C++: Practical Programming by Example》一書末尾鄭重推薦另外兩本進階好書(除了他們自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本書!

網路編程

在網路編程時代,C++應該扮演著怎樣的角色,讓ACE(Adaptive Communications Environment)來告訴你。

Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns

Douglas C. Schmidt, Stephen D. Huston, C++ Network Programming, Volume 2: Systematic 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 Edition)

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 Insight and Experience

《C++沉思錄》,人民郵電出版社

Andrew是世界上屈指可數的C++專家。這是一本關於C++編程思想和程序設計技術而非語言細節的著作。如果你已經具有一定的基礎,這本書將教你在進行C++編程時應該怎樣思考,應該如何表達解決方案。整本書技術表達透徹,文字通俗易懂。Bjarne這樣評價這本書:本書遍布「C++是什麼、C++能夠做什麼」的真知灼見。

Stanley B. Lippman, Inside The C++ Object Model

《深度探索C++對象模型》,華中科技大學出版社

《深度探索C++對象模型(影印版)》,中國電力出版社

從編譯器的角度觀察C++可以使你知其然並知其所以然。本書探討了大量的C++面向對象程序設計的底層運作機制,包括構造函數、函數、臨時對象、繼承、虛擬、模板的實例化、異常處理、運行期類型識別等,另外還介紹了一些在實現C++對象模型過程中做出的權衡折衷。喜歡刨根問底的C++程序員不要錯過這本書。

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented software

《設計模式:可復用面向對象軟體的基礎》,機械工業出版社

『伍』 自學編程需要哪些入門書籍

1、《實戰Java程序設計》

這是一本既注重實戰,同時也注重底層「內功」訓練的書,非常適合初學者閱讀!

『陸』 菜鳥程序員需要學習哪些基礎知識

java學習是由簡入難的學習過程,不要一開始就學習太過於復雜的,也不要好高騖遠,java的基礎很重要,所以一定要由最基礎的學起,抓實基礎。下面是昆明北大青鳥java培訓小編結合大部分情況為大家總結下:菜鳥程序員需要學習哪些基礎知識。

首先要學習java的基礎知識。

不要被新技術迷惑,所謂萬變不離其宗,新技術都是基於java的基礎之上,如果基礎不扎實,對於這些新技術的理解也是一知半解,學不到根源。

1、web開發

全面的JEE的web開發知識:Servlet+JSP+javaBean+TagLib,到這里做一個完整的web應用項目開發。

2、J2EE基礎

j2ee說白了就是做網頁,這時候你要從先從java里脫身出來,學些跟網頁有關的東西:

html:很簡單的東西不是太笨的話半天左右即可搞定

js:易學難精,想速度找工作不必花太多時間,隨便買本javascript書略讀並備查推薦:JavaScript高級程序設計;JavaScript權威指南

資料庫:如果沒有基礎的話,建議多花時間,至少一個月,開始建議用mysql,然後是oracle,然後是sqlserver,這段時間最關鍵的就是sql語言的編寫。

xml就是一種封裝數據的格式,沒啥好學的,練習一下怎麼用dom4j或者jdom讀寫xml即可。

jsp,servlet,tomcat:這段時間說白了就是用jsp來做個網站。

3、EJB開發

包含全面的EJB知識:1)EJB入門和無狀態會話Bean;2)有狀態會話Bean;3)BMP和CMP是實體Bean;4)jms和MessageDrivenBean;5)事物和安全(JTA、JTS和JAAS);6)WebService的開發和應用;

要會使用主流框架

框架其實就是一些公共的工具和方法,被封裝到一個盒子中供您隨時調用,框架也是別人用java編寫的,相當於你調用別人寫好的公共模塊,可以節省時間和效率。

主要是3大框架:

mvc框架:struts,struts2,jsf

or映射框架:hibernate,ibatis

業務框架:spring

重量級框架:ejb

這些都是java技術的學習知識點,和學習流程,先簡單後復雜,由一個點展開,開始更廣更深入的學習。這些都掌握了以後,你就學會了java,具備了基本編程的能力,但不代表你就能做出優良的產品,所以接下來,你就需要學習軟體工程和演算法,進一步的提升自己。想更快更扎實的學習java知識嗎?趕緊到昆明北大青鳥java培訓機構報名吧,選擇昆明北大青鳥,你絕不後悔!

『柒』 《程序員必讀的職業規劃書》epub下載在線閱讀全文,求百度網盤雲資源

《程序員必讀的職業規劃書》(陳理捷)電子書網盤下載免費在線閱讀

鏈接: https://pan..com/s/1QTtAYhQ7iFr4SYbSUHjXFQ

提取碼: hj7r

書名:程序員必讀的職業規劃書

豆瓣評分:7.4

作者:陳理捷

出版社:機械工業出版社

出版時間:2015-04-01

頁數:97

內容簡介

程序員是一種邏輯動物,只有當他們理解求職到底是一種什麼行為以後,才能做出有意義的行動。

所以本書不講職場、不灌雞湯,從價值論開始,以獨創的職業畫布工具展開,從四大象限、九大方面為你講解。

有果更有因、有理更有據,分析數據、簡歷模板、書寫工具、技能樹圖一應俱全,實為程序員們應該人手一本的職業規劃書。

作者簡介

Easy(陳理捷),Job Deer.com創始人、LazyPHP作者、前新浪雲資深架構師。在過去的一年中閱讀過上萬份技術簡歷,幫數千位程序員找到工作,在技術求職和招聘方面有豐富的實踐經驗。

『捌』 學習C語言 必看的書籍

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語言的嚴肅知識而又不願意多花費哪怕一丁點時間,這本書就是首選。
順便說一句,這本書的索引製作非常出色,極具實用價值,這可能首先要歸功於正文部分的簡明扼要。此外,盡管它看上去很像一本教程,但其實更是一本寫給專業程序員的指南。如果你不具備任何其他語言程序設計背景或基本的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語言參考手冊(第五版)》

影印版(機械工業出版社)、中文版(機械工業出版社)
在C語言參考手冊類書籍里,Samuel P. Harbison 和Guy L. Steele合著的C: A Reference 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的合作者。在這個項目中,他負責提供高度可復用的基礎架構。在不斷的實踐中,他完全使用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程序設計教程》(機械工業出版社出版,原書第二版)。除了對技術的正規描述(輔以許多簡明扼要的例子)外,每一章後面都帶有小結、術語、常見的程序設計錯誤、良好的程序設計習慣、性能忠告、可移植性忠告、軟體工程評述、自我測驗練習及答案等。整書內容清晰,組織良好,易於閱讀和理解。值得一提的是,有許多入門書讀完一遍即可扔掉,而這一本是個例外。
結語以上這幾本書很大程度上局限於描述C語言及標准庫本身,如果希望學習更專業的、領域相關的C程序設計技術,你可以在選擇閱讀這幾本書的基礎上繼續查閱專門書籍。此外,在C語言書籍領域,水平不相上下的作品有很多,這幾本只是根據我自身的閱讀體驗

『玖』 哪位知道有關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++對象模型過程中做出的權衡折
衷。喜

『拾』 程序員必讀的14本書籍

程序員必讀書籍有哪些呢?下面是我精心為您整理的程序員必讀的14本書籍,希望您喜歡!

程序員必讀的14本書籍

1、《代碼大全》 史蒂夫·邁克康奈爾

“優秀的編程實踐的網路全書,《代碼大全》注重個人技術,其中所有東西加起來, 就是我們本能所說的“編寫整潔的代碼”。這本書有50頁在談論代碼布局。” —— Joel Spolsky

Steve McConnell的原作《代碼大全》(第1版)是公認的關於編程的最佳實踐指南之一, 在過去的十多年間,本書一直在幫助開發人員編寫更好的軟體。

無論您的經驗水平如何,也不管您在怎樣的開發環境中工作,也無論項目是大是小, 本書都將激發您的思維並幫助您構建高品質的代碼。

2、《計算機程序的構造和解釋》

《代碼大全》、《重構》和《設計模式》這些經典書會教給你高效的工作習慣和交易細節。 其他像《人件集》、《計算機編程心理學》和《人月神話》這些書會深入軟體開發的心理層面。 其他書籍則處理演算法。這些書都有自己所屬的位置。

然而《計算機程序的構造和解釋》與這些不同。 這是一本會啟發你的書,它會燃起你編寫出色程序的熱情; 它還將教會你認識並欣賞美; 它會讓你有種敬畏,讓你難以抑制地渴望學習更多的東西。

其他書或許會讓你成為一位更出色的程序員,但此書將一定會讓你成為一名程序員。

3、《C程序設計語言》

《C程序設計語言》(第2版新版)原著即為C語言的設計者之一Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan合著的 一本介紹C語言的權威經典著作。 我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。

原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標准C的基礎。

人們熟知的“hello,world”程序就是由本書首次引入的,現在,這一程序已經成為所有程序設計語言入門的第一課。

4、程序員思維修煉(修訂版)

生命中沒有什麼是一成不變的,人們需要改變自己的習慣和方法。不論你是程序員、軟體公司管理者、技術奇人還是思想家,或者你只是想讓自己的大腦更聰明一點兒,所有嘗試改變自己的人,請把本書當作改變的開始……

5、系統化思維導論

關注人文,掌握思維法則,揭開科學與技術的神秘面紗

“它給我的震撼是第一次我能從全局的角度去看待各個學科,科學也不再是冷冰冰的割裂了的教條,不再是難以理解的一堆符號。”

6、優秀的叛逆者:引領組織變革的力量

Lois Kelly和Carmen Medina用她們的實戰經驗,向我們展示了如何在工作中贏得信賴、提出想法、處理人際關系、管理沖突和保持理智。”

——亞當•格蘭特,沃頓商學院教授,《紐約時報》暢銷書Give and Take的作者

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

《重構:改善既有代碼的設計》適合軟體開發人員、項目管理人員等閱讀, 也可作為高等院校計算機及相關專業師生的參考讀物。

8、《Site Reliability Engineering》

《SRE:Google運維解密》可以讓讀者學習到Google工程師在提高系統部署規模、改進可靠性和資源利用效率方面的指導思想與具體實踐——這些都是可以立即直接應用的寶貴經驗。任何一個想要創建、擴展大規模集成系統的人都應該閱讀,該書針對如何構建一個可長期維護的系統提供了非常寶貴的實踐經驗。

9、《Refactoring》

那時候當我讀這本《重構:改善既有代碼的設計》時,由於它在關於代碼異味的單獨章節所花的篇幅,使得這本書非常值這個價。該書非常成功,因為它使重構和代碼異味的觀念成為主流。

Steve Yegge曾對這本書不吝贊譽之詞:

2003年10月,我第一次閱讀這本書,有一種不寒而粟的感覺。如果你意識到,當你想離職時,你已經工作5年。轉天我就隨意問周圍:“嗯,你已經讀過重構方面的書,對吧?我只是隨便問問,因為我很久以前讀過,當然不是現在。”在我所調查的20個人中,只有一個人

10、《Peopleware》

在大學時我讀到這本《人件》,該書似乎很令人信服,甚至所有的研究結果都支持該書的觀點:不設置截止日期就比設置截止日期要好;辦公室比隔間要好,等等。所有開發人員跟我討論的時候,基本都贊同這些觀點。

11、《編程珠璣》

盡管我不得不羞愧地承認,書中一半的東西我都沒有理解,但我真的推薦《編程珠璣》,書中有些令人驚奇的東西。 – Matt Warren

12、《修改代碼的藝術》by Michael Feathers

我認為沒有任何一本書能向這本書一樣影響了我的編程觀點。它明確地告訴你如何處理其他人的代碼,含蓄地教會你避免哪些(以及為什麼要避免)。

同意。很多開發人員討論用干凈的石板來編寫軟體。但我想幾乎所有開發人員的某些時候是在吃其他開發人員的狗食。– Bernard Dy

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

我推薦CharlesPetzold的《編碼》。在這個充滿工具和IDE的年代,很多復雜度已經從程序員那“抽取”走了,這本書一本開眼之作。 –hemil

14、《程序員健康指南》

閱讀全文

與程序員菜鳥必讀書相關的資料

熱點內容
雅思聽力807詞彙pdf 瀏覽:897
黃豆私人加密 瀏覽:192
java分鍾轉換小時 瀏覽:245
易語言伺服器如何提高 瀏覽:591
網站主機伺服器地址查看 瀏覽:859
演算法學不會能當程序員嗎 瀏覽:119
程序員技術交流研究 瀏覽:814
javaresponse文件 瀏覽:734
linuxrar壓縮文件夾 瀏覽:218
魅藍手機連接不上伺服器怎麼回事 瀏覽:379
工行app怎麼改已綁定銀行卡 瀏覽:533
oppo晶元程序員 瀏覽:602
oppok3應用怎麼加密 瀏覽:327
電腦軟盤怎麼加密碼 瀏覽:815
伺服器光交換機有什麼用 瀏覽:708
app上怎麼拍蛙小俠 瀏覽:217
志高聊天app怎麼下載 瀏覽:635
郵政app怎麼不能掃付款碼 瀏覽:559
筆記本電腦雙理由配置命令 瀏覽:65
拿著文件夾怎麼畫 瀏覽:877