View profile

大山姆的機機車車™ #8

Revue
 
我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。༺ 意見調查結果 ༻上一期提到我在編《C++ 世界的學習指南》時遇到的難題,謝謝讀者的回饋。
 
May 1 · Issue #8 · View online
《大山姆的機機車車™》電子報
我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。
༺ 意見調查結果 ༻
上一期提到我在編《C++ 世界的學習指南》時遇到的難題,謝謝讀者的回饋。有一點蠻有趣:有人覺得有 C 語言基礎,對於指標、陣列等有概念因此比較容易上手 C++。有人覺得懂 C 的人對 C++ 多型(Polymorphism)、虛擬函式(Virtual Function)適應不良(冠希?)。
語法方面,C++ 的保留字(Keywords)不算少,而且同一個符號在不同情境有不同的意義。這點程式設計老手可能習以為常,但對新手來說卻是學習障礙。
再來就是函式多載(Function Overloading),連運算子(Operator,例 +, -, ==, >)也可以多載的 C++,這點也有可能提高理解既有程式碼的難度。再加上 Call by Value, Call by Reference, Call by Pointer…,造成多載函式的推導更為複雜。
還有公認高學習門檻的 C++ Template 以及泛型編程,Template Meta-Programming 聽起來很「秋」,學起來可能痛苦三個月還不得其門而入…
C++ 這麼複雜,一定很難學,為什麼要學這種程式語言?我的看法是:
  1. 效能榨汁機
  2. 自己嚇自己
高階語言一字排開,C++ 在當代「電腦效能榨汁機」排名前段班,而且真正跨平台又不對效能妥協。
C++ 雖難,學會她卻是百分之百可能的任務。只要用對方法,下足苦心,半年就會有滿意的成果。
再次感謝讀者回饋,我很喜歡這樣的互動。Happy coding!

人物誌
Phil Nash (@phil_nash)
參兩摘
ACCU Conference - YouTube
Stack vs Heap Memory in C++
East End Functions : Level of Indirection
Unforgettable Factory Registration · Nir's blog
我有 xx 經驗,願意無償提供 OO 咨詢
去年有人在推特發起了「我有 xx 經驗,願意無償提供 OO 咨詢。」串連,成效不錯,Compiler Explorer 的開發者也參一腳,他的專業領域是金融、遊戲、行動裝置以及後端
Matt Godbolt
A semi-regular reminder that my DMs are open, and I'd love to offer advice to anyone who thinks I might have useful things to say. In my career I've done mostly C++ in finance, games, mobile devices and servers...AMA :) My email address is easy to find if you prefer that too!
10:31 PM - 23 Apr 2018
摘影片
C++ Edinburgh: Phil Nash — Modern C++ Testing with Catch2
Phil Nash 到 JetBrains 後持續開發與推廣 Catch。這支影片也提到了 Clara Command Line Parser。
C++ Edinburgh: Phil Nash — Modern C++ Testing with Catch2
The Clang AST - a Tutorial
延續 Clang 主題,應該不少人覺得 Clang 又肥又大,因為它本身就是龐大的演算法庫,其中一個是 Clang AST 。這場影片是官方文件, Clang AST 樹節點主要分為四種:型態宣告實作敘述
編譯器流程可以看 Morgan Wilde 的演講 A Brief Introduction to LLVM 。 Scanner 處理正則文法產生標記,Parser 分析上下文無關文法產生抽象語意樹,之後才是轉成中介碼,中介碼之後才會開始做優化。
中英對照:正則文法(regular grammar)、上下文無關文法(context-free grammar)、標記(token)、抽象語意樹(abstract syntax tree)
By Sidney Niu
The Clang AST - a Tutorial
CppCon 2017: Herb Sutter “Meta: Thoughts on generative C++”
延續編譯時期決定的主題, 並不是所有的超編程都是圖靈完備,但 C++ 的樣板已經是圖靈完備。 Herb Sutter 開場先提了 Three-way comparison(<=>) 符號說明好的語法是更簡單但功能更強。接著透過 constexpr 說明編譯時期決定與執行時期碼可以互轉的抽象層次思考,最後以 Metaclass 的概念帶入 C++20 concept 的設計理念。
中英對照:超編程(Metaprogramming)、圖靈完備(Turing-complete)
By Sidney Niu
CppCon 2017: Herb Sutter “Meta: Thoughts on generative C++”
開源專案
Clara: A simple to use, composable, command line parser for C++ 11 and beyond
WorkFlowy Tips
[108] 讓作家及譯者專心工作的好撇步—善用 Ghost Bullets 以及 Completed Items
想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請,加倍免費清單上限。
還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步現在人很少,快來助拳!
💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。想要匿名舉報的話,我開了一個 Sarahah,歡迎使用,謝謝!
本報內含 Affiliate Link 連結若干,也就是我有機會從中獲益,賺點奶粉錢,希望有朝一日能因此日進斗金(誤)。若對這樣的作法有疑慮,請讓我知道或者直接退訂也行,我不會介意,你請別生氣。☯
5, 4, 3, 2, 1, Launch!(賴床戒斷法)
在大腦有機會「說服」你繼續睡之前,讓火箭發射吧!另外一則影片也是類似的概念。「懶惰」與「拖延」是大魔王不是小囉嘍,請用盡全力克服!
How to Make Better Life Decisions in 5 Seconds
Did you enjoy this issue?
Thumbs up 1ae5a7bdfcd3220e2b376aa0c1607bc5edaba758e5dd83b482d03965219a220b Thumbs down e13779fa29e2935b47488fb8f82977fedcf689a0cc0cc3c19fa3c6bb14d1493b
If you don't want these updates anymore, please unsubscribe here
If you were forwarded this newsletter and you like it, you can subscribe here
Powered by Revue