分享 | C++ Primer 中文版 第五版 PDF EPUB

C++ Primer 中文版(第 5 版)

書(shū)籍信息

書(shū)名:《C++ Primer 中文版(第 5 版)》
原作名:C++ Primer, 5th Edition
作者:[美] Stanley B. Lippman / [美] Josée Lajoie / [美] Barbara E. Moo

內(nèi)容簡(jiǎn)介

這本久負(fù)盛名的 C++經(jīng)典教程,時(shí)隔八年之久,終迎來(lái)史無(wú)前例的重大升級(jí)。除令全球無(wú)數(shù)程序員從中受益,甚至為之迷醉的——C++ 大師 Stanley B. Lippman 的豐富實(shí)踐經(jīng)驗(yàn),C++標(biāo)準(zhǔn)委員會(huì)原負(fù)責(zé)人 Josée Lajoie 對(duì) C++標(biāo)準(zhǔn)的深入理解,以及 C++ 先驅(qū) Barbara E. Moo 在 C++教學(xué)方面的真知灼見(jiàn)外,更是基于全新的 C++11 標(biāo)準(zhǔn)進(jìn)行了全面而徹底的內(nèi)容更新。非常難能可貴的是,《C++ Primer 中文版(第 5 版)》所有示例均全部采用 C++11 標(biāo)準(zhǔn)改寫(xiě),這在經(jīng)典升級(jí)版中極其罕見(jiàn)——充分體現(xiàn)了 C++ 語(yǔ)言的重大進(jìn)展及其全面實(shí)踐。書(shū)中豐富的教學(xué)輔助內(nèi)容、醒目的知識(shí)點(diǎn)提示,以及精心組織的編程示范,讓這本書(shū)在 C++ 領(lǐng)域的權(quán)威地位更加不可動(dòng)搖。無(wú)論是初學(xué)者入門,或是中、高級(jí)程序員提升,本書(shū)均為不容置疑的首選。

作者簡(jiǎn)介

Stanley B. Lippman 目前是微軟公司 Visual C++ 團(tuán)隊(duì)的架構(gòu)師。他從 1984 年開(kāi)始在貝爾實(shí)驗(yàn)室與 C++的設(shè)計(jì)者 Bjarne Stroustrup 一起從事 C++的設(shè)計(jì)與開(kāi)發(fā)。他在迪士尼和夢(mèng)工廠從事動(dòng)畫(huà)制作,還擔(dān)任過(guò) JPL 的高級(jí)顧問(wèn)。
Josée Lajoie 曾經(jīng)是 IBM 加拿大研究中心 C/C++編譯器開(kāi)發(fā)團(tuán)隊(duì)的成員,在 ISO C++標(biāo)準(zhǔn)委員會(huì)工作了 7 年,擔(dān)任過(guò) ISO 核心語(yǔ)言工作組的主席和 C++ Report 雜志的專欄作家。
Barbara E. Moo 是擁有 25 年軟件經(jīng)驗(yàn)的獨(dú)立咨詢顧問(wèn)。在 AT&T,她與 Stroustrup、Lippman 一起管理過(guò)復(fù)雜的 C++開(kāi)發(fā)項(xiàng)目。

分享理由

(引用 孟巖推薦序 2013 年 8 月)

C++11 標(biāo)準(zhǔn)公布之后,C++社群出現(xiàn)了久違的熱情,有人甚至叫出“C++的復(fù)興”。指望 C++回到 20 世紀(jì) 90 年代中期那樣的地位顯然是昧于大勢(shì)的奢望,但是 C++經(jīng)歷了這么多年的打磨與起伏,其在工業(yè)界的地位已經(jīng)非常穩(wěn)固,在很多領(lǐng)域里已經(jīng)是不可取代也沒(méi)必要被取代的統(tǒng)治者。新標(biāo)準(zhǔn)的出現(xiàn)能夠大大提升 C++開(kāi)發(fā)的效率和質(zhì)量,因此贏得歡呼也是情理之中。在這種氛圍之下,編譯器實(shí)現(xiàn)的速度也令人驚喜。短短兩年時(shí)間,從開(kāi)源的 GCC、LLVM 到專有的 VisualC++和 Intel C++,對(duì)于新標(biāo)準(zhǔn)的追蹤之快,覆蓋之全,與當(dāng)年 C++98 標(biāo)準(zhǔn)頒布之后遲遲不能落地的窘境相比,可謂對(duì)比強(qiáng)烈。當(dāng)年是熱情的開(kāi)發(fā)者反復(fù)敦促?gòu)S商實(shí)現(xiàn)完整標(biāo)準(zhǔn)而不得,為此沮喪無(wú)奈,那種心情,至今記憶猶新。時(shí)過(guò)境遷,今天是編譯器實(shí)現(xiàn)遠(yuǎn)遠(yuǎn)沖在前面,開(kāi)發(fā)者倒是大大地落在了后面。

時(shí)至今日,能夠基本了解 C++11 標(biāo)準(zhǔn)的程序員恐怕不多,而能夠以新的 C++風(fēng)格開(kāi)發(fā)實(shí)踐的人更是鳳毛麟角。因此,今天的 C++開(kāi)發(fā)者面臨的一個(gè)重要任務(wù)就是快速掌握新的 C++風(fēng)格和工具。

而說(shuō)到教授“正宗的”C++11 編程風(fēng)格,《C++Primer(第 5 版)》如同它之前的版本一樣,扮演著法定教科書(shū)的角色。

一種優(yōu)秀的編程語(yǔ)言,一定要對(duì)于計(jì)算這件事情實(shí)現(xiàn)一個(gè)完整和自洽的抽象。十幾年來(lái)編程語(yǔ)言領(lǐng)域的競(jìng)爭(zhēng),除卻實(shí)現(xiàn)質(zhì)量之外,基本上是在比拼抽象的設(shè)計(jì)。而 C 語(yǔ)言之所以四十年長(zhǎng)盛不衰,根本在于它對(duì)于現(xiàn)代計(jì)算機(jī)提供了一個(gè)最底層的高級(jí)抽象:凡是比它低的抽象都過(guò)于簡(jiǎn)陋,凡是比它高的抽象都可以用 C 語(yǔ)言構(gòu)造出來(lái)。C++成功的根本原因,恰恰是因?yàn)樗m然試圖提供一些高級(jí)的抽象機(jī)制,但是其根基與 C 在同一層面。正因?yàn)槿绱?,每?dāng)你需要走下去直接與硬件對(duì)話時(shí),C++成為 C 之外唯一有效率的選擇。我的一個(gè)朋友在進(jìn)行了多年的大型系統(tǒng)軟件開(kāi)發(fā)之后,不無(wú)感慨地說(shuō),C++最大的力量不在于其抽象,恰恰在于其不抽象。

話雖然如此,但是 C++之所以脫離 C 而存在,畢竟還是因?yàn)槠鋸?qiáng)大的抽象能力。BjarneStroustrup 曾經(jīng)總結(jié)說(shuō),C++同時(shí)支持 4 種不同的編程風(fēng)格:C 風(fēng)格、基于對(duì)象、面向?qū)ο蠛头盒?。事?shí)上,把微軟的 COM 也算進(jìn)來(lái)的話,還可以加上一種“基于組件”的風(fēng)格。這么多的風(fēng)格共存于一種語(yǔ)言,就是其強(qiáng)大抽象機(jī)制的證明。但是,在 C++11 以前,C++的抽象可以說(shuō)存在若干缺陷,其中最嚴(yán)重的是缺少自動(dòng)內(nèi)存管理和對(duì)象級(jí)別的消息發(fā)送機(jī)制。今天看來(lái),C++98 只能說(shuō)是特定歷史條件造成的半成品,無(wú)論是從語(yǔ)言機(jī)制,還是標(biāo)準(zhǔn)庫(kù)完備程度來(lái)說(shuō),可以說(shuō)都存在明顯的、不容忽略的缺陷。其直接后果,就是優(yōu)雅性的缺失和效率的降低。我本人在十年前曾經(jīng)與當(dāng)時(shí)中國(guó) C++社群中不少杰出的人物交流探討,試圖從 C++98 中剪裁出一個(gè)小巧、優(yōu)雅的、自成一體的子集,希望至少在日常編程中,能夠在這個(gè)子集之內(nèi)可以寫(xiě)出與當(dāng)時(shí)的 Java 和 C#同樣干凈明晰的代碼。為此我們嘗試了各種古怪的模板技巧,并且到處尋找有啟發(fā)的代碼和經(jīng)驗(yàn)來(lái)構(gòu)造這個(gè)語(yǔ)言子集,結(jié)果并不理想,甚至可以說(shuō)是令人非常失望。后來(lái)我在我的博客中發(fā)表過(guò)好幾篇文章,探討所謂的 C++風(fēng)格問(wèn)題,其實(shí)就是說(shuō),C++不支持簡(jiǎn)潔明快的面向?qū)ο箫L(fēng)格,大家還不如回到基于對(duì)象甚至 C 語(yǔ)言的風(fēng)格,最多加點(diǎn)模板,省一點(diǎn)代碼量。非要面向?qū)ο蟮脑?,就必須依賴?Qt 或者 MFC 那樣的基礎(chǔ)設(shè)施才可以。

C++11 出來(lái)之后,增強(qiáng)的語(yǔ)言機(jī)制和大為完善的標(biāo)準(zhǔn)庫(kù),為 C++語(yǔ)言的編程風(fēng)格帶來(lái)了革命性的變化。如果能夠純熟地運(yùn)用 C++11 的新特征、新機(jī)制,那么就能夠形成一種簡(jiǎn)潔優(yōu)雅的 C++編程風(fēng)格,以比從前更高的效率、更好的質(zhì)量進(jìn)行軟件開(kāi)發(fā)。對(duì)于這種新的風(fēng)格,我認(rèn)為“直覺(jué)、自然”是最佳的描述。也就是說(shuō),解決任何問(wèn)題不必拘泥于什么籠蓋一切的編程思想,也不再沉溺于各種古怪的模板技巧中無(wú)法自拔,而是能夠根據(jù)那個(gè)問(wèn)題本身采用最自然、最符合直覺(jué)的方式。C++有自己的一套思維方式,比如容器、算法、作為概念抽象的對(duì)象等,很大程度上這套思維方式確實(shí)是合乎直覺(jué)的。只有到了 C++11 這一代,C++語(yǔ)言的高級(jí)抽象才基本完備,這樣一種風(fēng)格才可能真正落實(shí)。因此可以說(shuō) C++11 對(duì)于 C++98 而言,不是一次簡(jiǎn)單的升級(jí),而是一次本質(zhì)的躍升。

學(xué)習(xí)新的 C++風(fēng)格,并不是輕而易舉的事情。即便對(duì)于以前已經(jīng)精通 C++的人來(lái)說(shuō),熟練掌握 rvaluereference、move 語(yǔ)義,了解 unique_ptr、shared_ptr 和 weak_ptr 的完整用法,明智地使用 function/bind 和 lambda 機(jī)制,學(xué)習(xí) C++Concurrency 的新技術(shù),都絕非一朝一夕之功。對(duì)于那些初學(xué)者來(lái)說(shuō),這件事情更不簡(jiǎn)單。

本書(shū)無(wú)論對(duì)于初學(xué)者還是提高者,都是最經(jīng)典的教科全書(shū)。一直以來(lái),它的特點(diǎn)就是完整而詳細(xì),基本上關(guān)于語(yǔ)言本身的問(wèn)題,都可以在這本書(shū)里得到解決。而本書(shū)的另一個(gè)重要優(yōu)點(diǎn),就是其完全基于新的編程風(fēng)格編寫(xiě),所有的例子和講解都遵循 C++11 標(biāo)準(zhǔn)所體現(xiàn)出來(lái)的思路和風(fēng)格進(jìn)行,如果能夠踏下心來(lái)認(rèn)真學(xué)習(xí)和練習(xí),那么就能“一次到位”地掌握 C++11,盡管可能會(huì)比較慢。有經(jīng)驗(yàn)的 C++開(kāi)發(fā)者閱讀這本書(shū)當(dāng)然不用從頭到尾,選擇自己關(guān)心的內(nèi)容學(xué)習(xí) C++11 的新特性就可以,是快速升級(jí)自身能力的捷徑。

差不多十年前,我提出一個(gè)觀點(diǎn),每一個(gè)具體的技術(shù)領(lǐng)域,只需要讀四五本書(shū)就夠了。以前的 C++是個(gè)例外,因?yàn)檎Z(yǔ)言設(shè)計(jì)有缺陷,所以要讀很多書(shū)才知道如何繞過(guò)缺陷。現(xiàn)在的 C++11 完全可以了,大家讀四五本書(shū)就可以達(dá)到合格的水平,這恰恰是語(yǔ)言進(jìn)步的體現(xiàn)。

本書(shū)是這四五本中的一本,而且是“教程+參考書(shū)”,扛梁之作,初學(xué)者的不二法門。另一本是《C++標(biāo)準(zhǔn)程序庫(kù)(第 2 版)》,對(duì)于 C++熟手來(lái)說(shuō)更為快捷。ScottMeyers 的 Effective C++永遠(yuǎn)是學(xué)習(xí) C++者必讀的,只不過(guò)這本書(shū)的第 4 版不知道什么時(shí)候出來(lái)。AnthonyWilliams 的 C++ Concurrency inAction 是學(xué)習(xí)用標(biāo)準(zhǔn) C++開(kāi)發(fā)并發(fā)程序的最佳選擇。國(guó)內(nèi)的作品,我則高度推薦陳碩的《Linux 多線程服務(wù)端編程》。這本書(shū)的名字趕跑了不少潛在的讀者,所以我要特別說(shuō)明一下。這本書(shū)是 C++開(kāi)發(fā)的高水平作品,與其說(shuō)是教你怎么用 C++寫(xiě)服務(wù)端開(kāi)發(fā),不如說(shuō)是教你如何以服務(wù)端開(kāi)發(fā)為例子提升 C++開(kāi)發(fā)水平。前面幾本書(shū)都是談標(biāo)準(zhǔn) C++自己的事情,碰到像 iostream 這樣失敗的標(biāo)準(zhǔn)組件也不得不硬著頭皮介紹。而這本書(shū)是接地氣的實(shí)踐結(jié)晶,告訴你面對(duì)具體問(wèn)題時(shí)應(yīng)怎樣權(quán)衡,C++里什么好用,什么不好用,為什么,等等。

今天的 C++學(xué)習(xí)者是非常幸運(yùn)的,可以在 C++11 這個(gè)基礎(chǔ)上大步向前,不必再因?yàn)槟切┱Z(yǔ)言的缺陷和過(guò)度的技巧而煩惱。大家靜下心來(lái)認(rèn)真讀幾本書(shū),可以打下很好的基礎(chǔ)。

地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容