大山姆的機機車車™ #1

我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。 近年來,各家編譯器廠商積極支援最新的 C++ 標準規格,開發進度有時跑得比規格書還要快,許多功能在規格書處於草案階段就已經實現,使得年逾 三十的程式語言,老而彌堅 ,活力再現。 除了 C++ 與科技新聞,我還會推薦好用的工具、書籍,以及線上學習課程。偶爾發發牢騷,寫一寫生活感想。宅男如我,個性內向,以往較少主動與人互動。新的一年,我決定做一些改變。電子報是第一步,另外 PODCAST(播客) 也在測試中。 由於受眾未明,創刊號我花了不少篇幅說明 C++ 現況,有了基本的了解後,未來試

我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。

近年來,各家編譯器廠商積極支援最新的 C++ 標準規格,開發進度有時跑得比規格書還要快,許多功能在規格書處於草案階段就已經實現,使得年逾三十的程式語言,老而彌堅,活力再現。

除了 C++ 與科技新聞,我還會推薦好用的工具、書籍,以及線上學習課程。偶爾發發牢騷,寫一寫生活感想。宅男如我,個性內向,以往較少主動與人互動。新的一年,我決定做一些改變。電子報是第一步,另外 PODCAST(播客)也在測試中。

由於受眾未明,創刊號我花了不少篇幅說明 C++ 現況,有了基本的了解後,未來試著解答幾個問題:

  • C++ 能做什麼?
  • 為什麼要用(學) C++?
  • 如何入門以及精進 C++ 技能?

《大山姆的機機車車™》二零一八壹月創刊,HAPPY NEW YEAR!


C++ 現況

C++ 語言規格

C++17 去年正式成為 ISO 標準規格,主流編譯器已經部分支援新的功能,不過,實務上還是以 C++14 規格為主。若不幸使用較舊的編譯器,那麼至少找支援 C++11 的版本,日子會好過一點。

C++11 是新舊時代的分水嶺,人們常以 Modern C++ 統稱 C++11 以及之後的版本。我認為一定要知道而且學會的 C++11 功能有:

  • Lambda
  • Smart Pointer (std::shared_ptr, std::unique_ptr)
  • Rvalue References
  • Delegating Constructors
  • auto
  • nullptr

下一版標準規格暫定 C++20,可能加入的功能有:

  • Concepts
  • Transactional Memory
  • Ranges
  • Modules
  • Coroutine

上述幾項功能會對未來的 C++ 語言帶來不小的改變,保持關注。

編譯器(Compiler)

市面上主流編譯器(主流指的是較常使用與討論,並不全然表示較優秀)以及最新版本:

  • Visual C++ / Visual Studio 2017
  • LLVM 5.0.1
  • GCC 7.2

Visual C++

Microsoft 近年來積極推廣 C++,先前一度因為微軟力拱 C# 而被「冰」起來,但鴨子划水,C++ 這幾年可以說一吐怨氣。C++ 的關鍵人物 Herb Sutter 也任職於微軟,多少可看出微軟對於 C++ 的態度。

由於 Visual Studio 2017 幾乎無痛相容於前版(一直到 2013),我建議新專案一律使用 VS 2017。Visual Studio Community 2017 可免費下載使用最新最強的 C++ 編譯器,不用怎麼對得起自己。

Windows + Visual Studio 是我最常使用的開發工具與平台。

LLVM/Clang

這個開源專案為 Xcode 的預設編譯器,這幾年快速發展,可以說是 macOS 以及 Linux 平台的最佳編譯器。這一年來在 Windows 上取得不錯的進展,微軟在這方面提供不少助力,Visual Studio 2017 也可以設定使用 LLVM 做為其編譯器。微軟近年對於 Windows 以外的平台保持開放態度,現在在 Windows 上也能開發 Android/iOS,以及 Linux 程式。

GCC

我跟他不熟,就,也不錯用的感覺。

參兩摘

Kate Gregory - It's Complicated - Meeting C++ 2017 Keynote

凱特大嬸這個講近來頗受歡迎,算是說出許多 C++ 人的心聲。C++ 看起來很難,學起來很難,用起來很難...。但,一旦駕馭了她,碼農人生會很不一樣。

[180] Google's Abseil Project, Part 1

我寫這篇文章記錄與 Google Abseil 專案第一次接觸後的想法。總得來說,我對這個專案高度期待,下一個專案肯定會導入,未來計劃分享實際使用心得。

C++ Video - TheChernoProject

這個頻道由 EA 工程師經營,訂閱數超過六萬。每一集針對特定主題說明,其中一個系列的受眾為 C++ 新手,剛入門的可不要錯過。另外,新的系列是 OpenGL,若對遊戲開發有興趣,不妨瞧瞧。結論:不論 C++ 新手或老手都應該訂閱,每週皆有更新。

另外,作者歡迎觀眾贊助,平台使用國外最近幾年相當受歡迎的 Patreon

選書

Game Programming Patterns

前 EA 工程師的這本書一開始就攤在陽光下寫,現在依然可以免費線上閱讀。我大概是在本書撰寫進度中段左右發現她,文字簡單,範例碼給的到位,而且說明清楚易懂。書名定位在「Design Pattern」於遊戲軟體開發中的應用,其教導的觀念卻適用於所有具備物件導向概念的程式語言。

雖可線上免費使用瀏覽器閱讀,本書另可購買電子書或實體書,電子書售價 $29.95 鎂。已經有軟體開發經驗的碼農,想理解 Design Pattern 的奧妙,我推薦這本書。

人物誌

Casey Muratori and 《Handmade Hero》

《Handmade Hero》這款遊戲(尚在開發中)把開發過程以類似直播的方式公開。Casey Muratori 從七歲開始寫程式一直到現在,屬於老派碼農。最知名的作品是 The Granny Animation SDK 這個在 1999 年問世的 3D 動畫引擎,17  年了,還有不少大型遊戲使用這套引擎。另外,Casey 也參與了另一位知名遊戲開發者 Jonathan Blow 於 2016 推出的遊戲《The Witness》的開發工程。

《Handmade Hero》還在開發中,不過現在已經可以預購,售價 $15 鎂。不貴!除了遊戲,還附上原始碼,外加教學影片。等於買了一整套「遊戲開發學習包」,超划算的啦。

除了直播,Casey 也有一個播客(Podcast)—〈The Jeff and Casey Show〉。這個節目比較隨興,沒有固定時段。

Bartek's coding blog

這個部落格近年來頗受歡迎,格主 Bartlomiej Filipek 2012 年就開始寫技術文章,多繞著 C++ 轉。這一波 C++17 標準規格推廣更是產出了不少有用資源。其中,〈C++17 Features〉一文整理 C++17 新功能,而且列出三大編譯器的支援情況,參考價值極高。

作者也整理了一份文件,說明 Smart Pointer—〈Smart Pointers Ref Card〉,參考價值高。

PODCAST(播客)

CppCast

身為 C++ 粉,這個節目必聽。約每週一集,將滿三年。主持人 Rob Irving 以及 Jason Turner 每集約訪 C++ 界名人或著名專案以及公司開發人員,暢談軟體開發經驗。

這個節目由 Rob Irving 創辦,第二集的訪談對象 Jason Turner 後來成為主持人,表現出色。順帶一提,Jason Turner 開發的 ChaiScript 是一種類似 Lua 的腳本語言,讓程式不用重新編譯即可擴展功能,很不錯。

WorkFlowy Tips

[116] WorkFlowy 也可以是高效的閱讀工具

骨子裡,WorkFlowy 是一個列清單的工具。但實務上,使用手法與心態做一些調整,這個單純的清單工具可以變出許多花樣。我翻譯的這篇文章把 WorkFlowy 當做電子書閱讀器,內文分享了一整部英文版《聖經》。聖經隨身帶,立可查。

接觸 WorkFlowy 後發覺這個工具的潛力無窮,不是一般 To-do 或 Outliner 工具可比,便開始全力為推廣。除了翻譯官方部落格文章外,我在臉書開了一個社團,趕快加入,跟同好分享你的 WorkFlowy 獨門絕活!