大山姆的機機車車™ #21
▋得獎的是...
第十九、二十期共有十六位讀者參與《Software Engineering at Google》贈書抽獎活動。得獎的是:
- tt*****4@gmail.com
恭禧!確認信已寄出,請留意信箱,若七天無回信,將由第二順位讀者獲得贈書。感謝大家參與(抽獎影片)。
▋Spaceship Operator
C++20 帶來幾個前所未有的新功能。其中,Spaceship Operator 這個新的運算子在 Herb Sutter 等人於 2017 年提出後引起不少討論(外型以及必要性)。Spaceship Operator 用以減輕撰寫 C++ 比較運算子的痛苦,於 C++20 正式成為標準。本期收錄幾篇討論 Spaceship Operator 的文章。
主流編譯器最新版已經支援 Spaceship Operator。Visual Studio 2019 必須開啟 /std:c++latest 。
對了,目前這個新運算子的「中譯」從缺,不知讀者有什麼建議?
▋Rust 宇宙
大概去年開始,國外流行起若有人問「現在學 C++ 對嗎?」,就有人跳出來說「學 Rust 才是明智之舉,C++ 早就__了 」。
過去幾年,許多 Rust 專案的成功,在在證明了 Rust 是個好語言。安全以及效能的取捨,Rust 似乎找到不錯的切入點。熟悉的工具越多,競爭力越強,因此我鼓勵以正確的觀念,多學程式語言。
去年底,Microsoft 公開表示內部已經著手開發 Rust 這個新興程式語言於 Windows 平台發展的可能性,並釋出 Rust/WinRT 開源專案。該專案尚處早期開發階段,不過,看到整合 Win32 API、COM,事情漸漸變得有趣了...
「鬍子K」似乎是 Rust/WinRT 的要角,由「C++ 專門」開另一個副本...
我是山姆,《大山姆的機機車車™》是我投注心力製作的電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。
選書
Concurrency with Modern C++
幾個月前 Leanpub 推出的 C++ 套裝書特價,這是其中一本。本書從 C++11 開始介紹新的「執行緒」功能,淺談 C++ 多緒程式設計。
撰寫「多緒程式」或讓程式能夠並行處理多項任務,不是一件容易的事。光是第一步,回答「該不該用多執行緒?」就需要一定的經驗與技術底子。這本書著重在「多緒怎麼寫?」,但「為什麼要用多緒?」則不是本書重點,服用時請留意。
參兩摘
Spaceship Operator
本篇說明新運算子的必要性,解釋 Spaceship Operator 如何用於描述兩個物件之間的關係。Spaceship Operator 的優點之一是,原本要寫「六」個函數,現在只要一個,甚至,設成 default 後,一個都不用寫。
Simplify Your Code With Rocket Science: C++20's Spaceship Operator | C++ Team Blog
Microsoft 團隊近年推廣 C++ 標準不遺餘力,這篇舉了幾個例子說明 Spaceship Operator 的用途。
Analyze your builds programmatically with the C++ Build Insights SDK
眾所皆知,大型 C++ 專案經常被抱怨「編譯速度慢到脫褲」。為此,Microsoft 推出這個工具用來分析 C++ 專案編譯時的「景況」。
Plugin Gui Magic
JUCE 早期有 WYSWYG 開發環境,後來不僅不再維護,官方也不建議開發者使用該工具。Plugin Gui Magic 這個工具填補了這個空缺,讓開發者使用 WYSWYG 的方式建構 RAW Plugin。
Which Programming Language Should I Learn First? [Infographic]
由推友處得知這個以《魔戒》裡的角色代表程式語言。數年前的文章,但頗為有趣。我不熟《魔戒》,代表 C++ 那位,好像是個壞傢伙...🤔
iCircuit 的開發者 Frank Krueger 似乎不太愛 Rust。
摘影片
CppCon 2019: Gordon Brown “Efficient GPU Programming with Modern C++”
延續 Parallel Execution 的概念,C++ on GPU 同樣要以 SIMD 架構方式下去思考,盡量把任務設計能 Fully Parallel。
除此之外還要考慮快取的大小,畢竟只要有一個單位需要往下一層的快取所有執行單位都要一起等。
By Sidney Niu
CppCon 2019: Chandler Carruth, Titus Winters “What is C++”
任何語言都有缺點和優點,對應不同情況應該是使用不同的語言彼此合作。 C++ 發展至今已經是完全效能導向的語言,不需要過度讚揚或貶抑某個語言,重點是找到解決問題的方法。
【山姆補充】C++ 可以發揮的領域寬廣,執行效能高低主要取決於開發者能力。有一說,喜歡 C++ 的人,其「控制慾」比較強,想要多一點主控權,即使痛一點也無妨。🙄
By Sidney Niu
CppCon 2015: Scott Wardle “Memory and C++ debugging at Electronic Arts”
EA 為遊戲開發以及發行商,眾所周知,即使 C++ 的「缺點」無窮多,但從古早到現在,遊戲軟體還是以 C/C++ 為主要開發語言。雖然後來的 Unity 讓開發者可以用 C# 開發遊戲,但當代 AAA 級遊戲專案依然無法擺脫 C++。
開源專案
GitHub - electronicarts/EASTL
EA (Electronic Arts) 遊戲開發及出版商「藝電」家的 C++ 標準函式庫替代品。對 Microsoft Visual C++ STL 有意見?或可考慮這款強調高效能的 STL 實作品。取得 EASTL 相當容易,使用 vcpkg 或 Conan 都可以。
GitHub - microsoft/vcperf: A build analysis tool for the MSVC toolchain.
需要搭配 C++ Build Insights SDK 一起服用。
GitHub - awwbees/BespokeSynth: Software modular synth
剛發現的新鮮貨,使用 JUCE 開發(介面蠻好認),圖形化的介面,控制聲音流向,還可以用程式「寫音樂」。更酷的是,這是一個開源專案,對 C++/JUCE 有興趣的同好,還不學起來!
WorkFlowy Tips
想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請,加倍免費清單上限。
還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步,歡迎加入分享你最酷的 WorkFlowy 使用技的更多同好!
💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。偏愛匿名表心意的讀者,我開了一個「提問箱」,歡迎使用,謝謝!
本報內含 Affiliate Link 連結,透過我的推薦購買相關服務或產品,我有機會從中獲益。我也接受小額贊助,歡迎大家用行動支持我。感謝!