現代C++實戰30講-吳詠煒-極客時間-返現24元

小猿發表於2019-01-24

極客時間出品的《現代C++實戰30講》由吳詠煒所作,吳詠煒是前 Intel 資深軟體架構師。本專欄基於現代C++編寫可維護的高效能程式碼。

現代C++實戰30講 封面圖

《現代C++實戰30講》課程背景

C++,一門聲名在外的老牌程式語言。

作為一門多正規化的通用程式語言,它適用的領域非常廣泛,小到嵌入式,大到分散式伺服器,到處可以見到 C++ 的身影。從效能上看,C++ 表現也很出色,雖然完成同樣的功能,C++ 需要的程式碼行數可能是 Python 的三倍,而效能則可以輕鬆達到 Python 的十倍以上。此外,其發展前景也非常廣闊,作為未來趨勢的人工智慧和機器學習,外衣是Python(模型描述),但是核心還是 C++(高效能運算) 。

但你也可能聽說過 C++ 的另一種評價——複雜、難學、難用。上手和熟練掌握難,應用上容易出錯,被誤用的可能性也很大。還有,C++ 繼釋出語言標準的第二版——C++11——之後,它以每三年一版的頻度釋出著新的語言標準,每一版都在基本保留向後相容性的同時,提供改進和新功能。

難且迭代迅速,相信這兩座大山讓很多 C++ 程式設計師都望而生畏。可事實真的如此嗎?你有沒有深入思考過到底什麼樣的學習方式才最適合 C++?面對那麼多的新功能、單詞和語法規則,要記嗎?哪些才是重點?記住了又怎麼用呢?

針對以上這些問題,吳詠煒將結合自己過去 20 多年累積的工作經驗,節選現代 C++ 的重要新特性,帶你進入程式設計實戰,手把手帶你重新理解 C++。相信透過本專欄的學習,你能把 C++ 當作一種實用的語言,能用它寫出抽象但自然、可維護的高效能程式碼,並用它去更好地解決專案中的實際問題。

《現代C++實戰30講》作者簡介

現代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++實戰30講-吳詠煒-極客時間-返現24元

三、專欄模組是怎麼設定的?

專欄分為以下四部分:

第一部分——基礎篇,講解現代 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元。

 

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章