大山姆的機機車車™ #20
▋提問的智慧
雖是老調重彈,但前人的智慧結晶,值得我們不斷宣揚。
除了享受四下無人鑽研技術的樂趣,技術人(嚴格來說是所有人)更要懂「提問的智慧」。觀察幾個臉書社團,充滿嘴炮,快問快答,把炮火當技術力指標。回應與被回應的人,只管批評不願釐清,似乎「吵架」才是社團成立的宗旨?
人們常因對某人或某事所知不多,「神秘感」給人高深的誤解,誤以為某人或某群技術了得,心生愛慕。可是,虛無縹緲不等於「高深」,討論充滿「應該吧」「當年我...」「這個不就...雖然我也不確定...」,有技術基礎的老鳥路過或許可以免疫,但新手誤學「溝通技」,出社會的職涯走得艱辛無疑。
「提問的智慧」(How To Ask Questions The Smart Way)由 Eric Raymond 以及 Rick Moen 提出,至今十數年,被翻成許多語言:
推薦必讀,最好多讀幾次,中英文版都讀,並親身實踐。聽我此言,職涯加分,真心不騙。😉
▋《Software Engineering at Google》贈書
感謝讀者回應,目前有十一位讀者對這本書有興趣,五月第一期會公佈最終由誰獲得由 Titus Winters 撰寫,現價 $31.49 鎂的好書(八卦:作者近日表示,目前 Amazon 評價只得三顆星🙄),敬請期待。
待在家沒事,沒事待在家。
我是山姆,《大山姆的機機車車™》是我投注心力製作的電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。
選書
《C++17 - The Complete Guide》,本書作者 Nicolai M. Josuttis 寫了幾本 C++ 書籍,頗受好評。我買的是電子版,雖然 cppreference.com 很好用,但書本是作者整理過,結構較佳,適合逐步閱讀。
C++ Tutorial - Tutorialspoint
這個線上 C++ 教學文件(全英文),屬於入門,有組織的教學資源。(cppreference.com 較偏參考用,有問題,隨查即有)
參兩摘
《星箭廣播》34 集 —— 在台灣接全球的軟體開發案是怎麼一回事?
去年接受《星箭廣播》邀請,跟兩位主持人聊了過去幾年接軟體開發案的經驗,以及我對技術學習的看法,還有當初為什麼要架 WorkFlowy Tips 網站。自認講得不好,有很多改進空間。請多包涵。
《星箭廣播》的主持人跟後製都很棒,第一次這樣公開暢談自己的法,很棒的體驗。
Wanna learn a new language? Why not C++?
作者是 Python + C#(遊戲開發)專門,為了寫出更快的程式,開始學 C++。文章列出幾個 2020 年的現在,C++ 依然值得學習的原因:
- C++ 是 FANG(Facebook, Amazon, Netflix, Google)等大公司內部使用前三名的程式語言
- 效能高
同場加映 Quora 上的問答:Why do we need to learn C++ in 2020?
學習 C++ 的理由很多,但在臺灣,C++ 似乎特別孤單。最後,不意外,留言處的「Rust 是更好的選擇」不缺席。
In-class Member Initialisation: From C++11 to C++20
C++ 成員變數(Class Member Variable)的初始化方式,在幾次標準規格中有若干變化。本文簡介 C++11 至 C++20,初始化非靜態(non-Static)成員變數的方法。
學到一個新的縮寫(C++ 人很愛縮寫)→NSDMI , Non-static data member initialization。
影片區有 JetBrains 的 Timur Doumler 列出令人嘆為觀止的各種初始化手法。
Bartek's coding blog: C++20 Reference Card
Bartlomiej Filipek 是近年相當活躍的 C++ 開發者,除了部落格常態性更新,更提供了各個版本的 C++ 小抄(需要加入電子報)。
Format specifiers in the debugger (C++) - Visual Studio
即使用 Visual Studio 的老手,也不定知道這個藏在 Watch Window 裡的秘密。觀察一個變數,在變數名稱後加上特殊字元,即可讓 Visual Studio 以不同方式呈現變數的內容。
🌳🚀 CS Visualized: Useful Git Commands - DEV Community 👩💻👨💻
Although Git is a very powerful tool, I think most people would agree when I say it can also be... a... Tagged with git, computerscience, tutorial.
RemedyBG by remedybg
A 64-bit Windows debugger built from scratch. Handmade Hero 簡單介紹 RemedyBG 的優點。
摘影片
CppCon 2019: Jorg Brown “Reducing Template Compilation Overhead, Using C++11, 14, 17, and 20.”
C++17 以來編譯速度慢了許多被大家詬病,主要原因是 C++17 有著大量的編譯時期決定的功能。為了減輕這個問題 Google 工程師 Jorg Brown 提出了大家在使用樣板的時候要留意展開,展開長度會影響編譯時間長度,大部分的寫法容易變成 O(n^3) 甚至 O(n^4) 的展開,呼籲大家要改寫成 O(n^2) 的展開以避免因為樣板展開造成編譯時間過長。
By Sidney Niu
CppCon 2019: Matt Godbolt “Compiler Explorer: Behind The Scenes”
知名編譯器貢獻者之一 Matt Godbolt 在前幾年演講有提到程式設計師很多都是源自於小時候玩遊戲後想寫遊戲的夢想。 所以他前一場演講 Path Tracing Three Ways 直接來玩圖學XD。 這場演講主要是提到遊戲引擎常見的遊戲在 CPU 部分的優化手段,不過其實遊戲主要運算都在 GPU 部分阿((菸
By Sidney Niu
lvalues and rvalues in C++
C++11 引入了 Move Semantics 概念,使用 C++ 程式碼有機會跑得更有效率些。Move Semantics 涉及到新舊觀念,這支影片說明 C++ 既有的觀念,也就是 lvalue and rvalue。(關於名詞,R-Value, rvalue, Rvalue 都有人用,我選用全小寫 rvalue)
Initialisation in modern C++
JetBrains 的 Timur Doumler 列出令人嘆為觀止的各種初始化手法。依個人修為不同,可能邊看邊笑,也可能邊看邊吐,吐槽的吐。不過,我還是建議多看幾遍。
開源專案
GitHub - microsoft/PowerToys: Windows system utilities to maximize productivity
太古時期,許多沒有內建在 Windows 的好用工具,被包在名為 PowerToys 的工具組。Windows XP 之後就沒有再維護,但眾人依然懷念。這幾年微軟的改變,讓 PowerToys 重上抬面,而且維持微軟近年「吃錯藥」的舉措,PowerToys 的原始碼開放在 GitHub 上,供大家享用。
PowerToy 的主要開發語言是 C++,而且用到了 C++/WinRT,是個不錯的參考範例。
課程推薦
Pluralsight 全課程,四月免費看
新生或舊戶,皆可享用。還有半個月,趕快透過連結申請。Pluralsight 上有許多優質 C++ 課程,入門的推薦找「凱特大嬸」Kate Gregory 的入門課。也有針對 Design Pattern 的課堂,講師是 Dmitri Nesteruk。
WorkFlowy Tips
想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請,加倍免費清單上限。
還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步,歡迎加入分享你最酷的 WorkFlowy 使用技的更多同好!
💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。想要匿名舉報的話,我開了一個「提問箱」,歡迎使用,謝謝!
本報內含 Affiliate Link 連結,透過我的推薦購買相關服務或產品,我有機會從中獲益。我也接受小額贊助,用行動支持我。謝謝!