C++11標準后的C++閱讀書目

jopen 11年前發布 | 95K 次閱讀 C/C++

        英文原文:C++ Reading List

        C++ 新標準 C++11 的發布導致了大批新書的出現,還有一些經典書籍也進行了更新。Andrew Binstock 在 Dr.dobbs 上給大家推介一些學習 C++ 必需的核心書籍。

        1. 《C++程序設計語言》英文第四版,作者: Bjarne Stroustrup

        這本書已經被正式列為 C++ 編程的權威書籍。它堪稱語言界的權威,獨具特色,書面清晰,由設計 C++ 的 Stroustup 所著。 也許有些讀者認為 ANSI C++ 文檔才是最佳選擇,但是這本書作為一個十分簡潔的參考書籍,更適合已經對該

        語言有所了解的讀者們。該書為新特性提供了友好的解釋,外加一些對于需要做的以及避免做的事情的建議,使得它成為了想要理解具體的特性的讀者們的最佳選擇。從這個意義上來說,這本書遠遠不止是一本參考教程。

        一些外在方面可能對這本書有所貶低,尤其是它沒有使用等寬字體來打印代碼。 不管對于一些讀者來說,這看起來有多美觀,它還是拋棄了普通的代碼讀者,他們希望垂直對齊,但這不可能出現。盡管這樣,代碼的排版還是比以前的版本好太多 了。另一擔憂會跟 C++ 本身有關,而不再是這本書。這個版本有 1328 頁,比原始版本大約多了 1000 頁。 Stroustrup 對于庫給了很少的介紹,這些數字足以說明 C++ 已經變得有多復雜。 盡管有這些問題,但是我很清楚,對于 C++ 程序員來說,不管使用這門語言的新特性有多困難,他們都得堅持,唯有這樣,才能前進。 極力推薦此書!

        (第四版的中文版還沒有出,目前《C++程序設計語言(特別版·十周年中文紀念版)》)

C++11標準后的C++閱讀書目

C++ Programming Language 4th Edition

        2. 《C++ Primer 第 5 版英文版)》由 Stanley Lippman,Josee Laoie 和 Barbara Moo 合著

        多年來,C++ Primer 已經成為了 C++ 的明確教程。 該版本主要針對C++11 標準進行了更新,完全重寫了。 900 頁密集的頁面里,對該語言的每一個角落都進行了詳細的探索。 這種說法也許有點保守。這本書的基調和內容都遠遠超過書名”入門”這個詞所指的意思。在語言上,沒有一節能是”快速講解”,相反,從質量到文本都做了很耐 心的描述以確保能涵蓋該語言的每一個方面,預見到 C++ 程序員可能遇到的任何問題。想知道將析構函數聲明為C++11 標準的 deleted 函數,會帶來什么樣的嚴重后果嗎我也不知道。但是這本書里會有詳細的解答,并引用了其他章節作為額外的輔助信息。

        同樣,這本書也僅僅包括了語言方面,還有一些對庫的討論和附錄,附錄總結了庫里包含的各種各樣的頭文件和算法(關于 C++ 庫的詳細介紹,我推薦這兩本書《The C++ Standard Library: A Tutorial and Reference》, 后面會提到。坦白講,你想知道的關于 C++ 的任何東西,在這兩本書里都有透徹的講解。 剛才提到的 Stroustrup 的那本書《C++ Programming Language, 4th Ed》, 似乎是這本書的競爭對手。 Stroustrup 的書主要是一本注重講解的參考書,也可以偶爾查詢用。但是這本書要實用得多。它有討論到,如果你沒有正確使用新特性,會出現什么問題,還包含了大量的代 碼,總之,相對于前一本書,這本書提供了更多的指導。

        對于這本書,我唯一的擔心就是它很明確是為已經了解基本語言的讀者編寫的。對于在校學生,甚至是一些有經驗的程序員但是初次接觸C++,我不推 薦這本書。它的內容太詳細以致于不能通過快速閱讀達到高效地掌握該語言的效果。 但是對于現有的 C++ 開發人員,尤其是那些想要使用C++11 新特性的開發者,這本書就是很好的選擇。

C++11標準后的C++閱讀書目

        3. 《C++標準庫:自學教程與參考手冊(第 2 版)(英文版)》Nicolai Josuttis 著

        這是 C++ 標準庫的經典教程和參考的第二版,根據新標準C++11 進行了更新。不像其他許多書,包含了庫和 API,這不是對一大堆函數調用的美化解釋。相反,它把標準庫(主要是 STL)分解成了一些小節,解釋了組件設計用到的基本方法。這時候,作者才進入到 API 的細節部分,結尾處總結了所有其它可能要用到的方法,還有一些簡短的解釋。容器部分才是精華,對設計,內部結構和應用的解釋,以及各種選擇之間的比較。

        這些論述很有說服力,條理清晰,信息量超大。例如,STL 函數對象和匿名函數的章節,花了 12 頁篇幅只是為了解釋什么是函數對象以及為什么要使用它們。這些論述之后,作者又花費了 12 頁來解釋預定義函數對象。在這個時候,他就已經為最后的討論《匿名函數之旅》 奠定了基礎。所以全書總共 1000 多頁。這些解釋很多都使用了簡短,又突出重點的程序來說明,所以你能夠很確切地理解一個函數是如何使用或應用的。

        這本書的第一版被許多的 C++ 程序員視為真正的經典。我覺得第二版沒有道理不受歡迎。對此不熟悉的讀者,不管是把它看作是第一本書的升級版還是另一本新書,我都強力推薦。這篇簡短的介紹也算是對這本是的一個很好的補充。

C++11標準后的C++閱讀書目

The C++ Standard Library 2nd Edition

        4. 《C++ Concurrency in Action  C++ 并發實戰》 Anthony Wiliams 著

        這本書主要是講在使用C++11 特性時對并發的深入探討。 它是由作為語言新線程支持基礎的 Boost Thread 庫的主要開發及維護人員編寫的。總之,作者很有權威性。

        該書從最基礎的東西開始,假設讀者已經有良好(甚至是非常好)的語言基礎,但是首次接觸并行代碼。 該書逐步地探討了一些由并發帶來的問題,講述了互斥的解決方案和局限性,以及它們是如何在C++11 中實現的。接下來講述了 C++ 的內存模型和原子類型。最后,深入探討了基于鎖和無鎖數據結構的設計。這是自從 Herb Sutter 在書中討論這個話題之后,我所見過的最好的處理方法。

        這本書很全面地涵蓋了一些真正重要的話題,這些話題在其他書籍中是經常被忽略的,比如像,多線程的代碼設計,線程應用程序的調試。當然,在我看 來,這兩者都描述得太少了。 書中大部分內容都是作為參考資料(就單獨的 C++ 線程庫就有差不多 130 頁)。 另一個附錄是一個完整的消息框架,并給出了代碼和注解。 毫無疑問,作者還是花費了很大的心思,相關的內容都講到了。

        對于這本書,我也有不滿意之處,但是它們都微不足道。 第一個就是你必須深入了解C++,否則閱讀起來比較困難。另一個就是作者最后一章講述的線程池,用紅色字體顯示的”高級線程”。在我看來,線程池在并發處 設定標記很有意思,但是很可惜,作者卻在這兒停筆了。由此可得知,雖然作者在目錄有提及到角色模型,但并沒有進行講解,就好像它壓根兒不存在一樣,可能在 William 看來,它其實對好幾種語言至關重要,卻不包括C++。

        總的來說,這些不滿意之處只能反應我的偏好,不能說明這本書有缺陷。William 的這本書非常棒,至少在未來的很長一段時間里都能稱得上是這個領域的典型著作。

        如果你想更仔細地看下這本書的內容,我們最近在一篇很受歡迎的文章里”Waiting for One-Off Events with Futures。”有摘選了一些片段。

C++11標準后的C++閱讀書目

C++ Concurrency in Action

        5. 《C和 C++ 安全編碼(英文版第 2 版) 》 (中文版的還是第一版)Robert Seacord 著

        這本書主要寫關于C和 C++ 的安全編碼。新版的內容幾乎是 2005 年原版的兩倍,展示了我們究竟學習了多少關于攻擊代碼的知識。實際上,在讀這本書的時候, 你可能被當下各種五花八門的東西弄得暈頭轉向。然而,正如作者所說的,安全其實不僅僅是實現反攻技術,而是在實現的過程中保持一種安全防范的思維定式。他 認為,只有保持這種心態,才有辦法減少那些未知的攻擊所帶來的損害。

        這本書詳細講解了各種類型的黑客以及怎么阻止黑客或者讓他們感到氣餒。書中的解釋一目了然,代碼也很清晰。但是它在要求上比其他編程書也更高一 些:要求讀者必須對C和C++d的執行有很好的了解,并且清楚在機器層發生了什么。因為這些必需的知識,書中沒有提到,所以如果事先不去了解的話,你可能 不會真正理解書中的精華部分。

        對于那些真正理解了程序執行的內部工作原理的開發人員來說,這本書就是不僅僅是一個很好的入門,更是一種啟示。例如,如果你不是一個安全方面的 專家,Seacord 在書中關于攻擊是如何通過加倍釋放已分配的內存塊被激活的論述, 凸顯了簡單的編碼錯誤的這一特征,可能就會被完全忽略了。 書中的解釋很有啟發性。

        該書的實踐本質就是讓你頻繁地使用一些推薦的工具去驗證代碼,并鎖定黑客喜歡探索的訪問機制。這本書真的很棒,絕對讓你受益匪淺,當然,也會使你成為一名更優秀的程序員。

C++11標準后的C++閱讀書目

Secure Coding in C and C++ 2nd Edition

        6. 《Real-Time C++》Chris Kormanyos 著

        這本書簡單地介紹了在實時項目中如何使用C++11。作者介紹了幾個基本的項目,展示如何使用C++11 來完成編碼。他以艾特梅爾公司的 AVR 單片機為例,使用 GCC 工具鏈編譯,從產品設計,到硬件和編碼的實現,以及如何刷機和運行程序都給出了解釋,在各種不同的環境下啟動發光二極管。接下來又引入了更復雜的項目,像 使用 C++ 編寫底層硬件驅動程序。在最后一章,繼續探討了標準 C++ 庫和 STL 為嵌入式所用。

        這本書很實用,書中的代碼也很清晰。它表明了對于進行嵌入式工作的來講,C++11 是一個合理的選擇。總之,對于想要進行嵌入式編程的 C++ 開發人員來說,這本書是很好的教程。但是它所選的一些案例項目,可能對于那些活躍在該領域的開發者來說,沒有什么吸引力。

        C++11標準后的C++閱讀書目

Real-Time C++

        翻譯: 伯樂在線 - JingerJoe   譯文鏈接: http://blog.jobbole.com/47357/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!