極客時間出品的《現代C++實戰30講》由吳詠煒所作,吳詠煒是前 Intel 資深軟體架構師。本專欄基於現代C++編寫可維護的高效能程式碼。
《現代C++實戰30講》課程背景
C++,一門聲名在外的老牌程式語言。
作為一門多正規化的通用程式語言,它適用的領域非常廣泛,小到嵌入式,大到分散式伺服器,到處可以見到 C++ 的身影。從效能上看,C++ 表現也很出色,雖然完成同樣的功能,C++ 需要的程式碼行數可能是 Python 的三倍,而效能則可以輕鬆達到 Python 的十倍以上。此外,其發展前景也非常廣闊,作為未來趨勢的人工智慧和機器學習,外衣是Python(模型描述),但是核心還是 C++(高效能運算) 。
但你也可能聽說過 C++ 的另一種評價——複雜、難學、難用。上手和熟練掌握難,應用上容易出錯,被誤用的可能性也很大。還有,C++ 繼釋出語言標準的第二版——C++11——之後,它以每三年一版的頻度釋出著新的語言標準,每一版都在基本保留向後相容性的同時,提供改進和新功能。
難且迭代迅速,相信這兩座大山讓很多 C++ 程式設計師都望而生畏。可事實真的如此嗎?你有沒有深入思考過到底什麼樣的學習方式才最適合 C++?面對那麼多的新功能、單詞和語法規則,要記嗎?哪些才是重點?記住了又怎麼用呢?
針對以上這些問題,吳詠煒將結合自己過去 20 多年累積的工作經驗,節選現代 C++ 的重要新特性,帶你進入程式設計實戰,手把手帶你重新理解 C++。相信透過本專欄的學習,你能把 C++ 當作一種實用的語言,能用它寫出抽象但自然、可維護的高效能程式碼,並用它去更好地解決專案中的實際問題。
《現代C++實戰30講》作者簡介
吳詠煒,前英特爾亞太研發中心資深系統架構師。1995 年畢業於復旦大學,從事軟體開發工作 20 多年,歷任開發工程師、專案經理、開發經理、架構師等職務。作者熱愛軟體技術,熱愛 C++,熱愛開源;對於精煉、易於維護的程式碼追求不懈。曾參與翻譯《程式設計大師訪談錄》。GitHub 上也能看到其維護的一些小開源專案,如 libunibreak。
你將獲得
掌握 C++ 語言現代特性
領會 C++ 抽象表達精髓
實踐 C++ 開發慣用模式
征服複雜性解決實際問題
課程設計
一、需要什麼基礎?
1.適宜人群:具有 1~5 年工作經驗的 C++ 程式設計師,熟悉基本程式設計概念和 C++ 的基本語法,包括指標、引用、異常、遞迴、class 等(不要求熟悉 C++11),有意願瞭解更深入的 C++ 知識。
2.不適宜人群:完全沒學過 C++ 的人(本專欄非 0 基礎課程)。
3.專欄中的內容大部分時間都會使用不超過 C++17 標準的語言特性,最後在講到 C++20 新特性時,某些實驗功能可能會要求某個特定的編譯器。
4.由於專欄涉及到的都是較短的程式碼,故作者不會提供工程檔案,建議你熟悉編譯器的命令列,來快速編譯程式碼。
5.特別說明:專欄中案例+程式碼偏多,不建議僅透過音訊學習,“文稿+音訊+動手實踐”為最佳學習方式。
二、專欄會講哪些知識?
專欄以現代 C++ 新特性以及相關的程式設計實踐為核心,重點講“是什麼”和“為什麼”。即透過學習,你能夠清楚地知道某個新的且十分重要的功能為什麼存在,應該在什麼場景下使用,以及這樣用的好處。而語法細節以及技巧,考慮市面資料已十分飽和,作者會盡可能地少講,需要的地方,會給出合適的參考資料。下面是本專欄的學習路徑圖
三、專欄模組是怎麼設定的?
專欄分為以下四部分:
第一部分——基礎篇,講解現代 C++ 中的最重要特性,幫助你理解基礎概念;
第二部分——提高篇,講述幾個獨立的專題,幫助你掌握 C++ 中的一些高階技巧;
第三部分——實戰篇,討論實際的工具和第三方庫,幫助你打磨手頭的兵器庫;
第四部分——未來篇,討論 C++20 中即將引入的一些新特性,幫助你培養前瞻性。
《現代C++實戰30講》課程目錄
開篇詞C++這麼難,為什麼我們還要用C++?
課前必讀:有關術語發音及環境要求
基礎篇
堆、棧、RAII: C++裡該如何管理資源?
自己動手,實現C++的智慧指標
右值和移動究竟解決了什麼問題?
容器彙編I:比較簡單的若干容器
容器彙編II:需要函式物件的容器
異常:用還是不用,這是個問題
迭代器和好用的新for迴圈
易用性改進I:自動型別推斷和初始化
易用性改進II:字面量、靜態斷言和成員函式說明符
提高篇
到底應不應該返回物件?
Unicode:進入多文字支援的世界
編譯期多型:泛型程式設計和模板入門
編譯期能做些什麼? 一個完整的計算世界
SFINAE:不是錯誤的特化失敗是怎麼回事?
constexpr:—個常態的世界
函式物件和lambda:進入函數語言程式設計
函數語言程式設計:一種越來越流行的程式設計正規化
應用可變模板和tuple的編譯期技巧
atomic、mutex和thread:進入併發的世界
future和promise:領略非同步中的將來
實戰篇
工具漫談:編譯、格式化、程式碼檢查、排錯各顯身手
不同的資料和錯誤處理方式:optional、variant和 expected
數字計算:介紹線性代數和數值計算庫 2. Boost:你需要的“瑞士軍刀”
兩個單元測試庫:C++裡如何進行單元測試?
EasyLogging++: 一個優秀的日誌庫
C++ REST SDK:使用現代C++開發網路應用
未來篇
Concepts:如何對模板進行約束?
Ranges:無迭代器的迭代和更方便的組合
Coroutines:協作式的交叉排程執行
結束語
本專欄為訂閱專欄,更新時間為2019年11月25日至2020年02月05日。訂閱成功後,即可透過“極客時間”App端、小程式端、Web端永久閱讀。
本專欄更新時間為每週一、三、五,形式為圖文+音訊,定價99元。
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***