大山姆的機機車車™ #11

我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。 SORRY and I AM BACK. 跳過一期,嚴格來說是兩期,禍首非世足,而是睡眠跟意志力不足。睡眠很重要, DHH 大神開示 了。睡眠不足導致上班不專心,反而寫不出滿意的程式碼。共勉之。

大山姆的機機車車™ #11

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

SORRY and I AM BACK.

跳過一期,嚴格來說是兩期,禍首非世足,而是睡眠跟意志力不足。睡眠很重要,DHH 大神開示了。睡眠不足導致上班不專心,反而寫不出滿意的程式碼。共勉之。


參兩摘

Understanding the meaning of lvalues and rvalues in C++

C++11 最重要的功能之一——Rvalue Reference and Move Semantics。這兩個功能對 C++ 程式的效能優化有重大影響。有人量測過,在一行程式碼都不改的情況下,只要用支援 C++11 的編譯器重新編譯,程式效能即有明顯增強。

C++ rvalue references and move semantics for beginners

前篇文章作者以 Rvalue Reference 為基,進一步說明 Move Semantics 對 C++ 程式帶來的效能優化。Move Semantics 的中心思想:避免不必要的複製,減少浪費。

How Many Strings Does C++ Have? – C++ and more!

稍具規模的 C++ 專案都會開發自己的「字串類別」,少有例外。其中一個原因是 STL 內建的字串型別 std::string 功能太過「稀疏」,因此開發自有字串類別是很自然的演進。本文列出目前 C++ 有哪些用來表示字串的方法。

Microsoft/nurikabe: Nurikabe puzzle solver

STL 把他先前在 Channel 9 上的系列教學影片中用到的範例程式—— Nurikabe solver 開源了。Nurikabe 是一個長得像「數獨(Sūdoku)」的解題遊戲,但玩法不同(我還不會)。

Modern C++ for C Programmers: part 1 • ds9a.nl articles

這個系列兩篇文章以 C 語言的角度探討 C++ 的優勢。文章簡單說明為什麼有時候 C++ 的程式運行效能比 C 的實作要快,例如 Quick Sort。還有 C++ 語言提供的組件讓人更容易寫出易於理解的程式碼,例如 RAII。(第二篇在這裡

abseil / Revisiting Regular Types

Abseil 專案除了程式碼,不定期發佈的文章也很精彩。這篇由 Titus Winters 寫的長文,探討 Regular types,並以這個由 Alexander Stepanov 提出來的定義,來檢視最新的 C++ 組件,如 std::string_view。這種文章值得多讀幾遍。

Learn Lua in 15 Minutes

Lua 常被用來當做遊戲內的 Scripting Language,例如《魔獸世界》。這種一頁式的介紹法(程式碼加註解)實在太讚了。

摘影片

Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”

最難實作的編譯器當然是地表最複雜的 C++ ,每次標準加入新特性都是挑戰。

Compiler Explorer 的開發者 Matt Godbolt 簡介編譯器的歷史同時展示過去不同時期的人工優化手段。因為現代編譯器優化理論很成熟,標準函式庫的實作都已經針對編譯器優化了,手動在語法上優化反而會變慢。

用 Compiler Explorer 可以看到程式碼如何被不同的編譯器在不同等級的優化結果。

By Sidney Niu

Miłosz Warzecha – An inspiring introduction to template metaprogramming

NVIDIA 的工程師 Miłosz Warzecha 先以一段不能編譯成功但會算出結果的程式碼做為示範 C++ 是一個編譯時期的語言。

接著使用了泛函編程概念示範如何活用可變參數模板,並且提出一個複製建構子和移動建構子共存時失敗案例的較佳處理方法,演講中的演算法已經實作在 boost::mpl 。(Ben Deane 的興趣也是用可變參數模板玩泛函編程)

中英對照:超編程(Metaprogramming)、泛函編程(Functional Programming)、可變參數模板(Variadic Template)

By Sidney Niu

開源專案

muflihun/easyloggingpp: Single header C++ logging library

這個 Logging Library 的語法與 Google glog 雷同,最近導入個人專案中,用起來輕鬆愉快。函式庫本身已是 Thread-safe,預設關閉,只要定義 ELPP_THREAD_SAFE 即可開啟。

WorkFlowy Tips

想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請,加倍免費清單上限。

還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步現在人很少,快來助拳!

💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。想要匿名舉報的話,我開了一個 Sarahah,歡迎使用,謝謝!

本報內含 Affiliate Link 連結若干,也就是我有機會從中獲益,賺點奶粉錢,希望有朝一日能因此日進斗金(誤)。若對這樣的作法有疑慮,請讓我知道或者直接退訂也行,我不會介意,你請別生氣。☯

面對這種影片的最佳策略:傻的願意相信