大山姆的機機車車™ #15
༺ Dev-C++ 曾經很好用,但... ༻
陸續看到論壇或社團裡,有人推薦 Dev-C++ 給新手。我覺得這種行為不可取,應加以制止。
求學以及剛退伍後那兩年,我陸陸續續用過 Dev-C++,印象不錯,與當時同類型的商用產品技術水準相去不遠,是免費工具的好選擇。
但是,原開發者早在 2006 年就公開宣佈不再維護該專案,雖然後來有人接手開發,但距離上一個穩定版也已經三年了。C++ 是一個持續進化中的程式語言,Dev-C++ 是一個幾乎停滯的專案。2018 年的現在,沒有理由推薦這麼一款「古老」的工具給新手了。
更好的選擇
在 Windows 平台上,免費的選擇以 Visual Studio Community 版最為推薦。JetBrains 的年度報告中,自家的 CLion 表現不俗,市佔率排行第三也是不錯的選擇。雖然是付費軟體,但學生、老師以及開源專案獲得免費授權,新創公司也有半價優惠。CLion 跨平台,macOS/Linux 皆有支援。
另一個也是跨平台的工具是 Visual Studio Code,不過我暫時不推薦新手使用 VS Code 當做主要的 C/C++ 開發工具,理由是比起正規的 IDE,需要多一點技術力。
Linux 上的另一個選擇是 Code::Blocks,不過老實說,該專案給我的感覺與 Dev-C++ 相去不遠,因此不推薦。我也反對使用 Eclipse CDT 來開發 C/C++ 專案,因為那就是 Java 人在用的東西!
現在開始,有人詢問 IDE 該選哪一個,拜託,不要再回答 Dev-C++ 了!
༺ CppCon 2018 ༻
CppCon 2018 剛結束,影片陸續釋出,這個一年一度的 C++ 開發者大會,辦得一年比一年風光,讓我都有想參加的衝動了。接下來的幾個週末,又有嗑不完的好料,Sidney 會很開心吧 XD
我是山姆,《大山姆的機機車車™》是我投注心力製作的電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。
參兩摘
Comparing Memory Allocation Methods
Windows 程式「挖」記憶體的方式有好幾種,每一種都有其特殊之處,Windows 平台上開發應用程式要留意這些方法的差異。說個笑話,鍾情於 C++ 寫作的人,心裡都住著一位控制狂。我們不能忍受 GC 的無理取鬧,覺得 VM 高潮真是莫名其妙。記憶體什麼的,走開,我們自己來!
abseil / Tip of the Week #117: Copy Elision and Pass-by-value
有了 std::move 以及 Move Semantics 後,「輸入參數(Input Parameters)」最合適的寫法可能不再是 Pass by Reference To Const,例如 const std::string&,而是 Pass by Value with Move Semantics。
Type Punning in C++ - YouTube
這支短片講的內容是眾生討厭、初學放棄 C++ 的主因之一—指標(Pointer)。取址、取值、強制轉型、指標運算、指標的指標...,腦袋轉不過來了啦。信不信由你,這恰恰是 C++ 被高手喜愛的原因之一:完全掌控。
Casting in C++ - YouTube
我超愛 TheChernoProject 的影片,長度適中,主題明確好吸收。這集講的是轉型(Type Casting),說明了 static_cast, dynamic_cast, reinterpre_cast 的用法及差異,很重要!
Static Analysis in Video Game Development: Top 10 Software Bugs
著名的靜態分析工具 PVS-Studio 列出遊戲專案裡排名前十的臭蟲。第十名看起來很瞎,但其實「肉眼」不容易查覺這隻蟲。
摘影片
code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care
延續快取主題,平行在快取的懲罰比非平行更重,因為 atomic read/write 會卡住所有平行單位的速度,所以在設計上要盡可能的減少全域讀寫,盡量讓工作搬到區域變數去運算。
Bjarne Stroustrup 在 2016 CppCon的keynote 有提到整個 Modern C++ 的歷史脈絡,平行是 C++11 以來增加使用者的主要原因之一,Herb Sutter 也說過 Free lunch is over。
By Sidney Niu
CppCon 2017: James McNellis “Everything You Ever Wanted to Know about DLLs”
延續連結器的主題, 微軟工程師 James McNellis 說明 shared library 的載入和連結機制,以及程式針對變數在不同檔案的記憶體位置原理,同時也會說明 extern 的行為和原理。
By Sidney Niu
MIDL3 with Larry Osterman
Larry Osterman 是微軟的資深員工,讓我印象深刻的是他說明 Windows Vista Audio Architecture 的影片。他讓我想到 Raymond Chen,技術人。
MIDL(Microsoft Interface Definition Language) 主要用途之一是定義 COM 介面,MIDL 不是新技術,由這個採訪影片得知微軟花了不少精力「精簡」MIDL,而這新版 MIDL 3.0 跟 C++/WinRT 關係密切。
業界高手與大學嫩芽的對談
卡內基美隆大學的學生跟有多年遊戲開發實務經驗,Handmade Hero 的老爸 Casey Muratori 對談。Casey 給了很多實務開發的「眉角」,包含了:
- 已經寫出來但不那麼好的程式碼,某種程式比那些還在腦袋裡的完美版
開源專案
GitHub - Microsoft/GSL: Guidelines Support Library
這個專案是微軟針對 The Core C++ Guidelines 的實作品,裡頭包含一些有用的工具如 gsl::span<T>。span<T> 怎麼個好用,看這裡就知道。
WorkFlowy Tips
想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請,加倍免費清單上限。
還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步現在人很少,快來助拳!
💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。想要匿名舉報的話,我開了一個 Sarahah,歡迎使用,謝謝!
本報內含 Affiliate Link 連結若干,也就是我有機會從中獲益,賺點奶粉錢,希望有朝一日能因此日進斗金(誤)。
山姆街口
這個討人厭的傢伙說得真踏馬的有道理啊!