㈠ 程序員雜志評出的十大it好書
1、人人都是產品經理
互聯網產品經理的第一本書。作者蘇傑經歷豐富,實踐出真知,串起產品經理散落在各處的精粹,讓人融匯貫通,掌握思維方法和做事方式,人人都是產品經理!
2、正在爆發的營銷革命:社會網路營銷指南
《程序員》雜志主編劉江如是說「搞技術的人也要懂得營銷」,無獨有偶,馮大輝亦說「技術本身也需要營銷」。在網路如此發達的今天,科技依然引領著營銷的變革,作為科技的創建者和使用者,更需要了解點營銷學。
3、高效程序員的45個習慣
這是一本對所有程序員開卷有益的好書,是一本融知識、哲理、實踐於一體的奇書。用簡明、易懂的方式將各種敏捷方法中的有效實踐有機地串聯成一個整體,深刻、實用,是有志於躋身「優秀程序員」的人員必讀之作。
4、演講之禪:一位技術演講家的自白
從事IT媒體行業已有10年,參加過無數的IT技術會議,最大的感觸就是演講者們能夠把技術講得很好,但在演講技巧,和聽眾互動以及演講的趣味性上實在是不敢恭維。而這本《演講之禪,正是專門為「參加(或以後有機會參加)公共演講的程序員精英們」而精心准備的。作者15年的演講經驗匯集於此書,從多方面介紹如何做好技術演講,以及如何處理演講時遇到的突發事件。值得一提的是,書中提到美國前總統柯林頓的演講費用高達每小時15萬美金(據媒體報道,他因全球巡迴演講獲得巨額收入,而成為近40年來最富裕的美國總統)。
5、結網:互聯網產品經理改變世界
稱得上是作者8年來培養產品經理新兵的經驗集萃,從互聯網產品經理的視角,深入剖析了互聯網公司的產品運作方式和互聯網產品的成功要素。值得一提的是,本書的閱讀體驗很好,脈絡清晰,結構分明,語句簡潔,排版考究。
6、程序員職場第一課
這是作者Leo 獻給社會新人的生存手冊。推薦給剛剛入職或入職一兩年的朋友。書中詳細闡述了學校里學不到,但是工作中又特別需要的「常識」。希望你的職業之路走得更順暢。
7、如何管理軟體企業
曾經一篇《我的大學10年》轟動IT開發界,如果拿來重讀依舊意味深長。從曾經的高校學子到企業老闆,如今已經為企業在做咨詢,林先生本身的過程就是一部很好的教科書。暫不論成敗英雄,林先生的這本《如何管理軟體企業》立足本土,值得品味。
8、團隊之美
書中匯集了30多位IT資深團隊領導的成功與失敗經驗,揭秘軟體工程歷史上最引人注目的團隊鮮為人知的故事。幫助你從中吸取教訓、學到經驗,打造成功的團隊。
9、觀止——微軟創建NT和未來的奪命狂奔
一個比爾蓋茨都怕的人?他是誰?一本在國外已經出版了15年,為什麼到今天才在中國有中文版面市?上市一個月在各大技術社區引起了巨大反響,每一個開發者在感嘆Culter的偉大與執著同時,也為自己是一個程序員而感到莫大的榮耀。
10、軟體隨想錄:程序員部落酋長Joel談軟體
這是一本影響全世界數百萬程序員的網志書、一位軟體行業老兵的真知灼見。作者以詼諧幽默的筆觸將自己在軟體行業的親身感悟娓娓道來,觀點新穎獨特,內容簡潔實用。從不同側面滿足了軟體開發人員、設計人員、管理人員及從事軟體相關工作的人員的學習與工作需要。
㈡ java程序員必讀的書籍
建議你看看《java程序員,上班那點事》,很多泥都會明白了!
㈢ 有什麼學編程的好書或者網站 急╮(╯▽╰)╭
其實不用先學什麼,只要對它有興趣,開始學的時候要多看看基礎的書,多練練,就OK了!打好基礎後,再看看高深的書籍。而且C已經是非常基礎的編程語言。
此外。現在出了用漢語編程的 叫易語言 。可以先學易語言入門。
㈣ 請大蝦們推薦幾本C++基於WINDOWS編程的好書
《C++Primer》或者《C++Primer
Plus》都是C++程序員的必讀書籍。
當當圖書網上C++類圖書分別排名1、2名,都是優秀經典圖書。
如果基礎差,那麼先看第二本,基礎好就看第一本。
兩本書後面都有練習,平常看完,就上機做練習。
一定要多練,擴展自己的思維、邏輯能力。
看完這兩本以後看《effective
C++》第三版,記住世界上只有兩種C++程序員,一種是看過《effective
C++》的,另一種是沒看過的。絕對不誇張。世界頂級C++大師Scott
Meyers成名之作的第三版的絕對得起這樣的評價。當您讀過這本書之後,就獲得了迅速提升自己C++功力的一個契機。
具體內容可以上當當圖書網
㈤ <軟體工程>的好書
軟體工程導論第四版張海潘編著
最適合初學者
軟體工程---實踐者研究 機械工業出版社
<<軟體工程-實踐者的研究方法>>
Software Engineering: A Practitioner's Approach
Roger s.Pressman 梅宏
總體方法論和過程
第1名:
解析極限編程——擁抱變化(影印版)
原書名:Extreme Programming Explained:Embrace Change
作者:Kent Beck
出版社:中國電力出版社
原出版社:Addison-Wesley
頁書:194
定價:26
出版日期:2003-9-1
專家評語:
曲俊生:
XP(極限編程)由於其高度可操作性,尤其是對於業界眾多實踐的總結,在敏捷軟體開發方法中一馬當先,獲得了廣泛的研究與關注。本書是了解XP的必讀寶典,其中對於XP的原則、核心價值、最佳實踐都有深入的描述,更加難能可貴的是,作者並沒有效法其他鼓動者,將XP推到「萬金油」的高度,而是非常清楚地列舉了它不適用的地方。同時,作者也指出,不要太深入地追究您在項目中採用的是否是完全的XP實踐,而應該根據項目的實際進行剪裁。
本書適合對於敏捷軟體開發感興趣,同時又想找到一個可操作性較強方法的開發人員。
王詠剛:
單憑書名里「擁抱變化」這四個字,Kent Beck這本專門給大夥兒解釋極限編程是什麼東東的紅寶書就沒白寫。要說也是,那些沒事兒就鼓搗世界級的軟體工程理論、動輒就要寫1000頁以上大部頭的老先生們做夢也想不到,他們的眼中釘肉中刺,他們想方設法要「管理」、「控制」的對象——軟體開發里的「變化」——在Beck看來就像是楊過身邊的大雕,雖然長得丑點兒,卻能陪你練劍,讓你成為真正的大俠。聽Beck的沒錯,趕快放下架子,和「變化」打成一片吧,要不然你永遠也甭想練成獨孤九劍。
第2名:
敏捷軟體開發(影印版)
原書名:Agile Software Development
作者:Alistair Cockburn
出版社:人民郵電出版社
原出版社:Addison-Wesley
頁數:324 定價:35
出版日期:2003-8-1
專家評語:
曲俊生:
很早以前就讀到英文的電子版,在很大程度上,本書是對於RUP等方法論的顛覆,尤其是在國內「軟體藍領」宣傳大行其道的時候,本書構成了一副有效的清醒劑。本書是Cockburn從20多年的IBM工作中總結出來的實踐結晶。書中充滿了睿智的比喻與描述,例如,將軟體開發形容成一場游戲。書中對於水晶方法的介紹固然可貴,但是更加精彩的是對於人、溝通等主題的深入描述,可以說,這是既《人件》之後對「人」在軟體開發中重要作用描述的又一本經典著作。
該書也不是了解SE(軟體工程)的入門書籍,適合於對傳統軟體開發過程有深入理解,但是對於敏捷軟體開發了解不深的PM(項目經理)詳細閱讀。
第3名:
測試驅動開發(影印版)
原書名:Test-Driven Development
作者:Kent Beck
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:226 定價:32
出版日期:2003-8-1
專家評語:
徐鋒:
分析、設計、編碼、測試,已經成為了軟體開發領域亘古不變的真理。Kent Beck,這一全力追求敏捷,希望將編程發揮到極限的黑客級大師,提出了顛覆性的理論——測試先行。在本書中,作者結合編程實例,說道理、講方法,並結合自動化測試框架來提高效能。讓筆者看完之外,就有躍躍欲試之感,叛逆的精神融入了每一個細胞。
該帖由: lindows修改,時間 2004-1-6 上午11:44
分析和設計
第1名:
編寫有效用例
原書名:Writing Effective Use Cases
作者:Alistair Cockburn
出版社:機械工業出版社
原出版社:Addison-Wesley
頁數:304
定價:25
出版日期:2002-7-1
專家評語:
張恂:
用例是10多年來最重要的需求分析技術,更是現代軟體過程和項目管理的主驅動軸。隨著對用例理解的深入,我不禁倒吸一口氣:對於大多數項目,如果不細化到用例這個層次,我們過去寫的所謂「需求」其實都算不上真正的需求。此書是繼Ivar Jacobson的OOSE之後,用例兩大流派的「教主」之一Alistair Cockburn的代表之作,而且我一直認為它是迄今為止最好的用例教材。
10多年前Cockburn曾經聽過Jacobson的課,沒想到後來他在用例技術的實用化方面做出了貢獻,大有青出於藍而勝於藍之勢。大概與作者喜歡作詩(以及他對道德經的愛好)有關,我很喜歡他的寫作風格:依著人們的直覺娓娓道來,在平淡無奇的文字背後卻折射出極其豐富的項目經驗和扎實的專業技巧,讀完之後你會驚訝地發現一切竟然如此簡單和美妙,這不就是軟體開發的真諦么?
徐鋒:
用例分析技術是一個偉大的創舉,它將開發團隊帶到了客戶的視角上,這是一個良好的驅動點。掌握用例分析技術,將對你的職業生涯帶來很大的益處。《編寫有效用例》是你的起點,本書能夠幫助你真正有效地利用該技術,更好地掌握這一看似十分簡單、卻又十分復雜的需求分析方法。薄薄的一本書,卻記載著方方面面問題的答案,從這里騰飛吧。
第2名:
重構——改善既有代碼的設計(影印版)
原書名:Refactoring: Improving the Design of
Existing Code
作者:Martin Fowler
譯者:侯捷 熊節
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:431 定價:68
出版日期:2003-8-1
專家評語:
王詠剛:
沒有什麼比《重構》這本書更能理解程序員的苦衷並處處為程序員著想了。那些軟體工程權威們總板著臉說「你不能這樣,你不能那樣」,好像所有程序員都是該他們管教的小孩子;而《重構》卻告訴我們說,沒人能一步到位地把所有問題都想清楚,設計差不多了就開始寫代碼吧,等寫煩了寫膩了的時候再抽空兒零敲碎打修修補補——這可不是三天打魚兩天曬網,用形而上學的話講,這叫重構。
第3名:
分析模式——可復用對象模型(影印版)
原書名:Analysis Patterns:Reusable Object Models
作者:Martin Fowler
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:357 定價:48
出版日期:2003-6-20
專家評語:
宓吉琦:
應該是一本比較難懂的書,晦澀程度可能還超過設計模式,但也是任何一個想做架構師的人所必讀的。軟體是為其他產業服務的, 只有能把其他產業的需求順利轉化為軟體功能, 同時具有軟體設計藝術的人才是好的架構師。本書中,作者就把他從事的許多行業的寶貴建模經驗無條件地提供給大家,這些建模的經驗的積累往往需要花費幾年或者十幾年的時間。
項目和配置管理
第1名:
人月神話(影印版)
原書名:The Mythical Man-Month
作者:Frederick Phillips Brooks, Jr.
出版社:中國電力出版社
原出版社:Addison-Wesley
頁數:322
定價:25
出版日期:2003-3-1
專家評語:
青潤:
一種感慨,一種沉默……在該書中看到的神品的推薦,讓人唏噓不已。不過,這本書的確是軟體工程領域內的一本極品,國內見過似乎理論道行很深的書,但是卻沒有見到過有這樣理論與實踐深度並存的書籍出現過!
沒有項目經歷,沒有工程經驗,勸你千萬不要閱讀此書,否則,是對神品的褻瀆!而且,你也絕對不可能看明白的!
「開發人員交付的是用戶滿意度,而不僅僅是有形的產品」——沒有經驗的人能看明白么?國內的軟體以工程項目居多,國內的教育以理論為主,理論與實踐的脫節,學生學到的幾乎是空白,這也就是為什麼其他專業轉過來從事計算機行業的人往往在軟體公司裡面的表現往往比計算機專業畢業要好的一個很重要因素。
王詠剛:
網上有不少板磚拍在這本書上,因為有人嫌這書太老套,幾十年前的破事兒了還敢擦脂抹粉地端出來蒙人騙錢。我偏要說這書挺好看,關鍵是你不能拿它當項目管理入門的教材看,你得把他當成一本跟你談心聊天講故事的散文集來看。你瞧前些年,那麼多女孩子捧著本余秋雨如醉如痴似顰似笑風情萬種,難道就不許我們程序員揣著《人月神話》假裝深沉故作風雅,既陶冶了知識青年的道德情操又學習了項目管理的思想方法嗎?
第2名:
快速軟體開發(影印版)
原書名:Rapid Development
作者:Steve McConnell
出版社:機械工業出版社
原出版社:Microsoft Press
頁數:676
定價:58
出版日期:2003-3-1
專家評語:
張恂:
眾人看完此書皆掩卷長嘆,相見恨晚啊!在外面參加了那麼多國際項目管理課程,對改進「軟體」項目管理到底有多大真實效果呢?軟體項目經理當然要懂軟體項目自身的規律!誇張一點,學了這么多通用的PM知識,可能還不及這樣一本實話實說的書管用。軟體項目經理可能是軟體行業中承擔壓力最大,也是最有苦難言,最需要關心的一個群體。書里有這么多美國同行的經驗教訓、陷阱和誤區,如果你對此還一無所知,難免會一而再、再而三地掉進去;書里還有這么多優秀的實踐方法,你為什麼不試著用用看呢?所以我的建議是,如果Steve McConnell這位朴實的優秀程序員、著有多本名著的技術作家兼國際軟體工程權威說話了,大家一定要仔細聽聽。這年頭的「必讀經典」大有泛濫之勢,實在讓人招架不住,可是這次我甘冒風險大膽地說:對於改變國內軟體項目管理的窘況,此乃必讀之選。
第3名:
領導軟體開發團隊
原書名:Leading a Software Development Team:A
Developer's Guide to Successfully Leading
People and Projects
作者:Richard Whitehead
譯者:吳志明
出版社:電子工業出版社
原出版社:Addison-Wesley
頁數:304 定價:36
出版日期:2002-5-1
專家評語:
徐鋒:
一本親切的好書,讓我愛不釋手。如果你第一次擔任項目經理,這本書可以讓你迅速進入角色;如果你已有豐富的項目管理經驗,你也能夠從中吸取養份,解決埋藏在你心中很久的疑問。其採用的實例為驅動的寫作方法,可以成為案頭常備的寶典。
㈥ 對於程序員的自我修養這本書,你怎麼看
還不錯的一本書,主要講了裝載,鏈接,庫,三個方面,是程序員調試程序,了解程序運行原理不可多得的一本好書,推薦!!!
㈦ 為什麼說是好書(程序員的自我修養)書評
off to John Bell and Croyden to have the
㈧ 學習Java有哪些好的書籍
對於沒有Java編程經驗的程序員要入門,隨便讀什麼入門書籍都一樣,這個階段需要你快速的掌握Java基礎語法和基本用法,宗旨就是「囫圇吞棗不求甚解」,先對Java熟悉起來再說。用很短的時間快速過一遍Java語法,連懵帶猜多寫寫代碼,要「知其然」。
在有了一定的Java編程經驗之後,你需要「知其所以然」了。這個時候《Java編程思想》是一本讓你知其所以然的好書,它對於基本的面向對象知識有比較清楚的交待,對Java基本語法,基本類庫有比較清楚的講解,可以幫你打一個良好的Java編程基礎。這本書的缺點是實在太厚,也比較羅嗦,不適合現代人快節奏學習,因此看這本書要懂得取捨,不是每章每節都值得一看的,挑重點的深入看就可以了。
這本書一大特點是以單元測試和TDD來貫穿全書的,在教你Java各種重要的基礎知識的過程中,潛移默化的影響你的編程思維走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的語法為基礎講解,要學習JDK5.0的新語法也不錯。還有這本書對於內容取捨也非常得當,Java語言畢竟類庫龐大,可以講的內容太多,這本書選擇的內容以及內容的多寡都很得當,可以讓你以最少的時間掌握Java最重要的知識,順便培養出來優秀的編程思路,真是一本不可多得的好書。
打下一個良好的Java基礎,還需要更多的實踐經驗積累,我想沒有什麼捷徑。有兩本書值得你在編程生涯的這個階段閱讀,培養良好的編程習慣,提高你的代碼質量。
這本書名氣很大,不用多介紹,可以在閑暇的時候多翻翻,多和自己的實踐相互印證。這本書對你產生影響是潛移默化的。
本書最大特點是很薄,看起來沒有什麼負擔。你可以找一個周末的下午,一邊看,一邊照做,一個下午就把書看完,這本書的所有例子跑完了。這本書的作用是通過實戰讓你培養TDD的思路。
《Head First java開發》是本完整的面向對象(object-oriented,OO)程序設計和java開發的學習指導。此書是根據學習理論所設計的,讓你可以從學習程序語言的基礎開始一直到包括線程、網路與分布式程序等項目。最重要的,你會學會如何像個面向對象開發者一樣去思考。但如果你真地想要好好地學習java開發,你會需要《Head First java開發》。這本書可是Amazon編輯推薦的十大好書之一!強烈推薦學習此書,非常適合初學者入門。
《java開發從入門到精通》這本書主要針對java開發基礎,對於沒有學過java開發的人才說,是一個不錯的選擇。通過這本書,大家可以從零開始,慢慢碼銷搜來學習,而且實操很多,不會讓你看到最後出現只會理論的情況。
《java開發編程思想》可以說遲歷是最經典的java開發著作,是所有java開發程序員必備教科書。這本書不管是正在學習還是已經工作許多年的程序員,都可以從這本書中得到你想要的東西。這本書具有教材和工具書的作用,就像一本字典,想知道什麼都可以從中查詢。雖然這本書很好,但並不建斗櫻議初學者學習,對於初學者難度較大。
《瘋狂的講義》這本書比較適合自學者,內容比較項目化,實操方法很多,如果你想進行java開發的深入學習,不妨看看這本書。
這本書分為兩個部分,第一個部分講的是基礎知識,第二個部分講的是高級特性。由於內容非常有層次,所以非常適合自學的同學學習。
㈨ 學習程序員需要購買哪些書
想他們都說的不太清楚。你想學編程的話那你首先的考慮學哪種語言。選擇好語言的話就去買本你所選擇語言的書籍去學習,(記住最重要的是動手能力,每學到一點就反復去練習直到你熟能生巧)。等把那些基礎的學習好了的話,你就再去買編程思想的書學習。要想把編程思想真正學懂可怕不是我幾句話就能說清楚就算專業人士學編程思想也要幾年的練習時間。(本人手打,望樓主採納)
㈩ 推薦幾本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++對象模型過程中做出的權衡折衷。