C++ 高效編程不得不看的九本開源書籍
導讀書籍是非常主觀和私人的財產,編程書籍也不例外。但是不管 C++ 編程書籍的風格、關注點或者節奏如何,好書總可以帶領讀者走過一段引人入勝的旅程,揭示程式設計語言的能力,還能向讀者描繪如何使用程式設計語言來實現各種事物。
分享是一種美德,我精心挑選了九本值得一讀的優質 C++ 書籍,這些書籍均基於開源協議發布。在這之前,我會給出一份 C++ 的簡短介紹。
C++ 是由 Bjarne Stroustrup 設計,初次發佈於 1983 年。它是一種靜態類型、格式自由、多重範式、可移植、編譯式的通用程式設計語言。它被認為是中級語言,同時包含有進階與初級程式設計語言的特性。C++ 設計用於實現系統級與應用的編程,它拓展了 C 程式設計語言,因此其名字中的使用了自增運算子 ++。
C++ 仍是一種流行的程式設計語言。例如,它被廣泛應用於嵌入式系統、銀行以及通訊業。它作為 C 的超集保留了 C 標誌性的簡潔與高效,同時提供強型別檢查、多重繼承、資料抽象、異常處理操作符重載、泛型程式設計,以及物件導向編程等功能。C++ 不僅影響了 C 語言的發展,同時也影響到了包括 C#、Java 在內的許多其他程式設計語言。
《Boost C++ 類庫The Boost C++ Libraries》作者 Boris Schäling(570頁)
《Boost C++ 類庫The Boost C++ Libraries》被認為在 C++ 世界中極其重要並有深遠影響。書中這些可移植的庫提供對多種任務和結構體的支援,包括多線程、容器、字串和文本處理、迭代器、線性代數、偽隨機數產生、元程式設計範本、並發程式設計、資料結構、影像處理、Regex和單元測試。Boost 可以在幾乎所有現代作業系統上工作,包括 Linux 和 Windows 及其衍生,並且支援絕大多數現代編譯器。
這本書介紹了 72 個 Boost 庫,提供了廣泛並且實用的功能。它們能夠協助程式員更輕鬆的管理記憶體和處理字串。這些庫提供多種容器以及其它資料結構來拓展標準庫。使用這些庫可以輕鬆實現平台無關的網路應用程式。
本書是一顆值得添加到各類收藏中的明珠。430 份原始碼例子生動形象地闡釋了這些庫的功能。
本書前面的章節審視了記憶體管理、字串處理、容器、資料結構、演算法、通訊、檔案與流以及時間。後續章節進一步探索了函數式編程、並行編程和泛型程式設計。以對語言拓展、錯誤與數文書處理、應用程式庫、設計模式以及其他庫的大部分內容。
本書採用知識共用署名-非商業性使用-禁止演繹 4.0 國際許可協議進行許可。如果你喜歡實體書,可以在亞馬遜上購買紙質書,也可選擇如 kindle、E-book 和 PD F格式的電子書。
《C++ 注釋C++ Annotations》作者 Frank B. Brokken (1029頁)
《C++ 注釋C++ Annotations》提供了關於 C++ 程式設計語言的一份全面的教程。它可以被當做一門 C++ 課程的教材。本書面向已掌握 C 語言或其他類 C 文法知識的使用者。
本書主要章節有:
- 命名空間
- 字串——C 提供的是最基礎的字串支援
- I/O 流庫——提供了一個基於類概念的輸入/輸出庫
- 類——C 提供了兩種結構化不同類型資料的方法。C 語言的結構體包含多種類型的資料成員,而 C 語言的共用體union同樣可以定義不同類型的資料成員。本章介紹的類,也是一種結構體但是它的內容對外部世界來說是預設不可訪問的。
- 待用資料和函數
- 記憶體管理——審視 C++ 中能夠操作記憶體配置的操作符
- 異常——允許 C++ 程式執行受控的非本地返回命令,避免了使用 longjmp(非局部跳轉)和 setjmp(啟用非局部跳轉)函數的缺陷。
- 操作符重載——介紹通用的操作符重載
- 抽象容器
- 繼承——派生的另外一個特性。 本章示範基類指標可能被用來指向衍生類別的對象。
- 多態——繼承的一種特殊形態
- 友元機制——介紹 friend 關鍵詞以及它的使用原則
- 成員指標——定義成員指標及其用法,靜態成員指標,指標長度
- 嵌套類——當嵌套類與其外圍類有概念上的緊密聯絡時會被使用
- 標準模板庫(STL)——包含容器、通用演算法、迭代器、函數對象、分配器、適配器和資料結構的通用庫。這些演算法使用的資料結構都是抽象意義的,因此演算法實際上可以使用任何資料類型。
- 泛型演算法——涵蓋標準模板庫中的泛型演算法
- 函數模板——探索模板獨特的句法。介紹模板型別參數與模板非型別參數和函數模板等概念並且提供模板的多個案例。
- 類模板——討論構建與使用類模板
- 進階模板用法——一份簡短的模板元編程主要特性與模板的微妙關係的介紹
本書有HTML、PDF、PostScript 和 txt 版本。它可以自由分發,基於 GNU GPL 協議發布。
《通過 C++ 和 Qt4 瞭解設計模式An Introduction to Design Patterns in C++ with Qt 4》作者 Alan Ezust, Paul Ezust (656頁)
《通過 C++ 和 Qt4 瞭解設計模式An Introduction to Design Patterns in C++ with Qt 4》從介紹 C++ 基礎知識、物件導向概念、UML(整合模組化語言)和核心 Qt 類開始。進而轉向更進階的編程概念如 Qt modules 和設計模式。最後嚴密地印證了重要的 C++ 特性。其中涵蓋了非常優秀的對函數、繼承和多態的講解。
本書不需要具備任何 C 或者 C++ 編程經驗前提,並且被設計為普適用途。它也為教學工作者準備了 Qt 案例、練習、答案以及課程 PPT。
本書是 Bruce Perens 開源系列中的一部分。所有在此系列中的書籍都是基於 Open Publication License V1.0 及其後版本發布的。
《像電腦科學家一樣思考:C++How to Think Like a Computer Scientist: C++》作者 Allen B. Downey (191頁)
《像電腦科學家一樣思考:C++How to Think Like a Computer Scientist: C++》是使用 C++ 程式設計語言進行軟體設計的一本簡潔友好的介紹性書籍。本書的目的是通過講解最基礎的概念並且以讀者容易接受的節奏逐步增加新內容來把沒有編程經驗的讀者培養成為未來的開發人員。
本書提供的有價值的內容包括:
- 變數、運算式和語句
- 函數
- 條件陳述式與遞迴
- 豐富的函數
- 迭代
- 字串
- 向量
- 成員函數
- 對象的向量
- 向量的對象
- 類與不變數
- 檔案輸入輸出和 apmatrixes
本書是一本在知識共用署名-非商業性使用-3.0 未語言版本協議下發布的免費書籍。
《C++ Qt3 圖形介面編程C++ GUI Programming with Qt 3》作者 Jasmin Blanchette, Mark Summerfield (464 頁)
最新發行的 Qt 穩定版本是 5.8,而《C++ Qt3 圖形介面編程C++ GUI Programming with Qt 3》指導讀者如何使用 Qt3 編寫 GUI 程式,Qt3 最近一次更新是 2004 年,但是本書仍然有大部分內容對 Qt4 和 Qt5 有效。
本書不是一本面向初學者的書,需要讀者對 C++ 有基本的理解。
本書向讀者介紹了使用 Qt 進行 GUI 應用編程所有的概念和需要的練習。本書不僅詳盡的講述了核心內容,而且也提供了一些特別的和高階的學習材料。
本書是 Bruce Perens 開源系列中的一部分。所有在此系列中的書籍都是基於 Open Publication License V1.0及之後版本發布的。
《開放資料結構(C++ 版)Open Data Structures (in C++)》作者 Pat Morin (336頁)
《開放資料結構(C++ 版)Open Data Structures (in C++)》教導讀者設計和分析基礎資料結構以及如何使用 C++ 實現。 它涵蓋了對如下資料結構的分析和實現:序列(列表)、隊列、優先隊列、無序字典、有序字典以及圖。作者的意圖在於向大學電腦科學的學生提供一條學習資料結構的免費的途徑,但是並不打算成為介紹 C++ 程式設計語言或者 C++ 標準模板庫的一本書。不過它可以協助程式員理解標準模板庫的資料結構是如何?的以及這種實現為何如此高效。
章節內容覆蓋了基於數組的列表、鏈表、分級鏈表、雜湊表、二叉樹(又包含了隨機二叉搜尋樹、替罪羊樹、紅/黑樹狀結構)。之後的章節還包括堆、排序演算法(比較、計數和基數排序)、圖、整數的資料結構和外部儲存空間搜尋。
本書基於知識共用署名 協議發布。免費的 HTML、PDF 均發行,本書的 LaTeX 版本,Java/C++/Python 原始碼都可以從 GitHub 下載。也有紙質書版本可供購買。本書已被翻譯為斯羅維尼亞語和土耳其語。
《使用 wxWidgets 進行跨平台 GUI 編程Cross-Platform GUI Programming with wxWidgets》作者 Julian Smart,Kevin Hock和Stefan CsomorBrifll (744 頁)
wxWidgets 是一個流行的 C++ 庫,可供開發人員使用單一的代碼基礎為 Windosw、Mac OS、Linux 和其他平台建立應用。它支援非常廣泛的圖形處理庫。
這本書《使用 wxWidgets 進行跨平台 GUI 編程Cross-Platform GUI Programming with wxWidgets》從簡單的介紹和起步章節開始,主要內容包括:
- 事件處理
- 視窗基礎
- 畫圖
- 輸入事件處理
- 使用 sizers 進行視窗布局
- 使用標準對話方塊
- 建立自訂對話方塊
- 映像編程
- 剪貼簿與拖放動作
- 高階視窗類別
- 檔案和資料流
- 記憶體管理,調試和錯誤檢查
- 編寫國際化應用
- 編寫多線程應用
- wxSocket 編程
- 處理文檔和視圖
- 日臻完美你的應用
本書是 Bruce Perens 開源系列中的一部分。所有在此系列中的書籍都是基於 Open Publication License V1.0及其後版本發布的。
《Rook 的 C++ 指南The Rook’s Guide to C++》作者 Jeremy Hansen (160頁)
《Rook 的 C++ 指南The Rook’s Guide to C++》的章節中包含變數、常量、輸入輸出、資料類型和轉換、條件判斷語句(if、else 和 else if、switch 語句)、字串、迴圈、數組、塊、函數和範圍。之後的章節主要集中解決問題和定位問題,包括前置處理器、高等代數、檔案輸入輸出、指標、動態資料、類和抽象、分離編譯和標準模板庫。
本書大部分都是由 25 位 Norwich 大學的學生於一個駭客馬拉松周末寫成。當然不敢說毫無缺點,但還是一本相當不錯的書。它被基於知識共用署名-非商業性使用-相同方式共用 3.0 未語言版本協議發布。同時在亞馬遜也有本書的紙質版可供購買。
《GCC 簡介An Introduction to GCC》作者 Brian Gough (144頁)
《GCC 簡介An Introduction to GCC》介紹了 GCC,同時介紹了 GNU C 和 C++ 編譯器:gcc 和 g++,均屬於 GNU 編譯器集合(GCC)。
本書解釋了如何單獨使用編譯器。作者通過數年對郵件清單中發表的問題的觀察,撰寫本書帶領讀者直接接觸 GCC 最重要的部分。
章節簡介:
- 介紹
- 編譯一個 C 程式——描述了如何使用 gcc 編譯 C 程式。程式可能是由單獨檔案或者多個檔案編譯而成,也可能使用系統庫和標頭檔。
- 編譯選項——描述gcc中可以使用的編譯器中常用的選項。這些選項可以修改本地庫和包含檔案的搜尋路徑,配置額外的 warning 和調試資訊,前置處理器巨集指令和 C 方言。
- 使用預先處理——描述了屬於 GCC 包內的 GNU C 預先處理 cpp 程式的用途。預先處理將宏定義在原始碼被編譯前展開。預先處理會在 GCC 編譯 C 或者 C++ 程式時自動被調用。
- 以調試為目的編譯——提供 -g 選項使目標檔案和可執行檔中儲存額外的調試資訊。當出現錯誤時,這些調試資訊允許從特定的機器指令回溯到原始碼中相應的行。
- 最佳化編譯——GCC 是一個最佳化編譯器。它提供了大量的選項來使其產生的可執行檔的速度得到提升,並盡量減小可執行檔的大小。
- 編譯一個 C++ 程式——描述了如何使用 GCC 來編譯以 C++ 編寫的程式,以及針對這門語言特定的命令列選項。
- 平台相關的選項——描述了一些通用平台上可用的選項,如 Intel 和 AMD x86 選項、x86 拓展選項、x86 64 位元處理器選項、DEC Alpha 選項、SPARC 選項、POWER/powerPC 選項、複合架構支援以及浮點相關問題。
- 問題定位——GCC 提供了幾項協助和診斷選項來協助使用者在編譯過程中定位問題。
- 編譯器相關工具——介紹了大量能夠用於和 GCC 組合使用的工具。包括:用來建立庫的 GNU 壓縮器 ar,以及 GNU 效能和覆蓋測試載入器:gprof 和 gcov。
- 編譯器如何工作——描述了關於 GCC 如何將原始碼轉換為可執行程式的更多細節。編譯是一個涉及到多種工具的多級過程,包括 GNU 編譯器自身(通過 gcc 或者 g++ 前端)、GNU 彙編器 as 以及 GNU 連結器 ld。編譯過程中一個完整的工具集合被稱之為工具鏈。
- 檢查編譯後的檔案——描述了多種有用的工具來檢查可執行檔和目標檔案的內容。
- 常見錯誤訊息——描述了 gcc 和 g++ 產生的最常見的錯誤和警告資訊。每一個案例都伴隨著錯誤和警告產生的原因,相應的例子和可能解決問題的建議。
- 獲得協助——如果讀者碰到了本書中未能涵蓋的問題,還有多種參考手冊更詳細的描述了 GCC 和程式設計語言相關的主題。
本書是基於 GNU Free Documentation 協議出版的。
此外還有一些 C++ 書籍可以免費下載,但是那些並不是基於開源協議發布的,或者作者沒有指定一個協議。這類書籍包括:
- Thinking in C++,第二版,卷一、卷二– 作者 Bruce Eckel (卷二作者增加了 Chuck Allison)
- C++ In Action:Industrial Strength Programming– 作者 Bartosz Milewski
最後,我對剛入門的 C++ 新手的建議一定是編程原理與體驗(C++ 版)Programming — Principles and Practice Using C++(第二版)。普遍認為這是最合適的入門書籍,由 C++ 的創始人書寫,物超所值。
via:https://www.ossblog.org/master-c-programming-with-open-source-books/
作者:Steve Emms譯者:xiaow6校對:wxy
本文由LCTT原創編譯,Linux中國榮譽推出
原文來自:https://linux.cn/article-8250-1.html
本文地址:http://www.linuxprobe.com/study-programme.html