《大山姆的機機車車™》電子報

Share this post

大山姆的機機車車™ #19

samtsai848.substack.com

大山姆的機機車車™ #19

Sam Tsai
Apr 1, 2020
Share this post

大山姆的機機車車™ #19

samtsai848.substack.com

▋好久不見!

距離上一次發刊,竟然是一年多前的事了!為慶祝復刊,這一期有「贈書活動」,有興趣的讀者,請往下看。👇

今年 C++ 圈最大的新聞非「C++20 標準規格定案」莫屬。C++20 可以說是自 C++11 以來,加入最多新功能的一版,其中幾個功能對於 C++ 生態圈未來的走向,有舉足輕重的影響。待各大編譯器廠商支援 C++20 後,未來的 C++ 程式碼如何「質變」,令人期待!

雖然 C++20 了,但開發者別擔心跟不上,C++ 依然是熟悉的 C++,強者不會被廢去武功,新人也不必擔心看不懂。據我多年的觀察,新功能的「發酵期」長達數年,有心人士有足夠時間適應。

幾個較常被討論的 C++ 新功能:

  • Concepts

  • Modules

  • Coroutines

  • Ranges

  • std::format

之後的電子報我會收集與 C++20 有關的資訊,望讀者跟這些新功能「日久生情」,不再陌生。迫不急待的躁進者,可以到這裡看看有哪些新功能。

▋Windows UI Framework

我在上一期(去年的事了)提到:

Microsoft 在 MFC 之後,幾乎停止了 C++ GUI Framework 的開發(ATL/WTL 不算)。

去年 Microsoft BUILD 大會,微軟端出了新技術,有機會解決 Windows 平台上,C++ GUI Framework 欠缺的問題。其中,有幾個技術我特別感興趣:

  • XAML Islands

  • WinUI 3.0

有了 XAML Islands,你可以在傳統 Win32 應用程式、WPF、Windows Form 裡,放 UWP 元件。藉此幫傳統應用程式續命。

WinUI 目前已經有穩定的 2.x 版,但今年即將釋出正式版的 WinUI 3.0,是微軟未來 Native Application 開發的重要角色。WinUI 使用 XAML 做為 UI 描述語言,經過數年的發展 XAML 在許多場合被重用,例如 Xamarin, NoesisGUI。

今年以前,我們是凡人。今年開始,我們是脆弱的凡人。疫情當前,保護好自己,留下拯救世界的本錢。

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


贈書

Titus Winters,一個我很敬佩的 C++ 職人。他是 Google 的資深工程頭子,也是 C++ 委員會成員。最近出了一本書(應該是他的第一本書)《Software Engineering at Google》,副標是「Lessons Learned from Programming Over Time」。

為紀念大機車報復刊,山姆決定送這本新書給一位讀者。如何獲得這本書呢?

有別於上次贈書,這次採用「Opt-in」的模式,規則如下:

  1. 你必須是本報訂戶

  2. 對該書有興趣

  3. 真的對該書有興趣

  4. 有 Amazon 帳號

  5. 在電子報尾按「👍」並「留言」或寫信至 thecppnews@i3d.io ,表明你對 Titus 的書有興趣

在第 #21 期出刊前,以「抽籤」的方式選出幸運讀者,公告於報頭(以及推特),確認讀者回覆後,方送出 Kindle 電子書。

一本好書 推薦閱讀

參兩摘

abseil / C++ Tips of the Week

Abseil 專案在 Google 內部頗受重用,Abseil 官網則累積了不少優質文章,其中的 TotW (Tip of the Week) 像當年 Herb Sutter 的 GoW 一樣,是 C++ 開發者不可錯過的金礦。

SourceGear | DiffMerge — sourcegear.com

Diff tool for Windows 我還是偏愛 DiffMerge。

Collaborative Collection of C++ Best Practices — github.com

CppCast 主持人之一,Jason Turner 整理了一份可免費閱的 C++ Best Practices 文章。初學後想要進一步提昇自己的 C++ 技能,這類 Best Practices 是不錯的學習資源,另一個必看的是 C++ Core Guidelines。

Best Practices 通常會告訴你怎麼做(HOW),但不一定會告訴你為什麼要那樣做(WHY),想讓自己的 C++ 技能更上層樓,理解 Best Practices 列出的事項背後的理由是不錯的練習。

C++ 人在推特 — twitter.com

2020 了,還有人踏入 C++ 這個火坑?有人整理了一些 C++ 學習資源,有「活的」的推特用戶,也有「死的」技術書。

Introduction  |  C++ Education — developers.google.com

Google 出的 C++ 教材(目前只有英文版),目的是讓有心教 C++ 的人有一個立即可用的教學材料。另有一專屬論壇,可以發問。

Talking C++: An Interview with Bjarne Stroustrup — news.codecademy.com

C++ 之父專訪,專訪 C++ 之父。文章底下列出 Stack Overflow 上票數最高的 C++ 提問。

C++ 17 constexpr 與 Lambda 表達式 | 羅根學習筆記 — zh-blog.logan.tw

偶然發現這個《羅根學習筆記》部落格,開始出現了 C++ 相關文章,版面編排以及內容皆優,值得訂閱。

摘影片

Troubleshooting Memory Problems — www.youtube.com

這支古老的影片說明了許多至今仍舊運作無誤的 Windows 系統上的記憶體管理重要觀念。當年公司花了約六千台幣買一整套,獲益良多。現在可免費觀看,每一個 Windows 上討生活的人都要仔細觀看。

Troubleshooting with Process Explorer — www.youtube.com

Process Explorer 是每一個專業 Windows 開發者必須熟悉的工具之一。這個工作管理員(Task Manager)殺手支援許多功能。使用時留意,有許多好用的功能預設沒打開,請花時間調整。這支影片說明其中幾個常用的功能。

C++ and Memory: Between Correctness and Performance

RedHat 工程師 Ulrich Drepper 介紹 C++ 是源自於設計給作業系統的 C 語言,所以延續了管理所有資源的權限,因此 C++ 的封裝行為的內容必須幾乎跟 C 一樣。

C++ 的新功能 atomic 、 vector 、 shared_ptr 都是在讓使用者更容易寫大型系統程式。

By Sidney Niu

C++ and Memory: Between Correctness and Performance

Chandler Carruth “Spectre: Secrets, Side-Channels, Sandboxes, and Security”

因為這幾年蠻多快取漏洞像是 Meltdown 之類的,所以安全性問題這幾年抬頭很快。 最好的安全性就是不要讓程式內的快取有可以攻擊的資料。

By Sidney Niu

Premake | Game Engine Series by The Cherno

使用 Lua 來設計 Build Script 用以產生各個工具的專案。似乎存在好一陣子了,但我看了這支影片才知道有這款東西。

開源專案

The new Windows Terminal — github.com

今年 Microsoft BUILD 開發者大會最大的亮點之一——微軟牌,開放原始碼 Terminal 專案。微軟顯然有備而來,事先準備好廣告,BUILD 期間瘋狂投放(Twitter),果不其然,造成廣大迴響。這個舉動對了許多開發者的胃,可見微軟內部對開發者社群的觀察入微,再加上近年擁抱開源的公司政策,招出得漂亮。

GitHub - KjellKod/g3log — github.com

工作關係,找到這個開源專案。其中一個功能—Custom Sink,可以提供客制的 Log 輸出端,例如將原本輸出至 Console 改成輸出至 Windows Event Viewer。

此前,我用過 C++ Logging 有:

  • glog

  • Loguru

  • Easylogging++

  • spdlog

Boden Cross-Platform Framework

我在 CppCast 2019 年四月份那集得知這個新專案。跨平台(iOS/Android, Desktop 也在規劃之中)又是以 Modern C++ 開發,值得觀注。其 Layout Engine 用的是 Facebook 家的 Yoga 專案,很大膽。不過,其使用 GPL 授權引起了一些討論。有人認為 GPL 的特性讓 Boden 不可能在 App Store 上架,「生命自會找到出路」,持續觀注。

A dbg(…) macro for C++ — github.com

又一個 Single-header library,其輸出的 Debug 資訊不只結果,除了檔名、行數外,連同 Expression 也一併輸出,這點跟多數同類型工具有所不同。

Port of the xxhash library to C++14. — github.com

我還沒用到這個專案,據說是相當快的 Hash Algorithm。這個是 C++ 實作版(最先是以 C# 寫就)。這篇文章提供簡介以及評測。

PowerToys: Windows system utilities to maximize productivity — github.com

記得是 Windows XP 時期,新電腦一定會裝 PowerToys 這個好用的「外掛」。似乎是在 Windows Vista 時期(或更早)PowerToys 沒再更新,也慢慢被我淡忘。

日前,微軟突然釋出支援 Windows 10 版本的 PowerToys,而且開放原始碼,更棒的是,該專案的主要程式語言為 C++,而且是 Modern C++!(使用了 WinRT/C++ 專案)

課程推薦

Unreal Engine 4 Course (Create Multiplayer Games with C++) | Udemy — click.linksynergy.com

這個 C++ 課程在 Udemy 上有二十多萬學生,近四萬則評分下來,還有 4.6 顆星,相當不簡單。這是一門進階課,不適合 C++ 新手。

WorkFlowy Tips

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

還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步,歡迎加入分享你最酷的 WorkFlowy 使用技的更多同好!

💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。偏愛匿名表心意的讀者,我開了一個「提問箱」,歡迎使用,謝謝!

本報內含 Affiliate Link 連結,透過我的推薦購買相關服務或產品,我有機會從中獲益。我也接受小額贊助,歡迎大家用行動支持我。感謝!

Share this post

大山姆的機機車車™ #19

samtsai848.substack.com
Comments
TopNew

No posts

Ready for more?

© 2023 Sam Tsai
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing