View profile

大山姆的機機車車™ #6

Revue
 
我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。 ༺ 議題討論 ༻ 前二期我摘了 2D Graphics Library 是否納入 C++
 
March 31 · Issue #6 · View online
《大山姆的機機車車™》電子報
我是山姆,《大山姆的機機車車™》是我的第一份電子報,希望透過這份小報,把我感興趣的資訊分享給同樣求知若渴的您。
༺ 議題討論 ༻
前二期我摘了 2D Graphics Library 是否納入 C++ 標準的議題,並提出我的看法。Sidney Niu 對此議題的看法與我不同,轉載如下:
這幾期都有提到 C++20 在討論是否要將圖形庫納入標準,實際上現在各家繪圖函式庫的開發社群也都在觀望中。
我個人是偏向支持 SDL2 併入 C++20 或未來的標準。第一個理由是目前的傾向是未來有 C++ on GPU 平行運算,這表示語言可以直接使用初步的繪圖卡指令,那圖形介面真的不是大問題。第二個理由是 boost::filesystem 併入標準也說明了 C++ 並不是非跨平台語言。第三個理由是標準訂下去不見得都會被完整實作,實際上現在三家編譯器 STL 的行為都有不一樣的地方。

SDL2 納入 C++ 標準的難度頗高,主要原因:SDL2 使用 C 語言實作,而非 C++。技術問題好解決,政治問題嘛 …😏。
我認為各家編譯器 STL 的行為有不一樣的地方不應該被視為「功能」,較正面的做法是努力消除這種情況到越少越好,對 C++ 社群以及開發人員才是好事。
「因為本來就有不一樣的地方,所以再多一些有何不可?」
制定標準的目的在於讓編譯器廠商實作時有所依循,而且大家的目標一致:讓 C++ 程式碼在改動最小甚至完全不用改動的情況下,編譯器吃進去吐出來的程式執行的行為一致。與此原則相違背的提案,我認為都不應該納入標準。各位覺得呢?

人物誌
Fabien Sanglard
參兩摘
Why C++ is so “Hard” to Learn – adamtcroft.com
A Foolish Consistency – // info
Jonathan Boccara is creating the Fluent C++ blog
Oboe is a C++ library which makes it easy to build high-performance audio apps on Android.
GoingNative 64: C++/WinRT
摘影片
Chandler Carruth “LLVM: A Modern, Open C++ Toolchain”
如果 IE 是用來下載更佳瀏覽器的瀏覽器,那可以說 g++ 是用來編譯更佳編譯器的編譯器。
雖然 ISO C++17 已經出來一年了,不過目前多數的 Linux 發行版中的套件管理員僅支援 C++11/14 的編譯器,雖然部分 C++17 功能可以使用旗標 -std=c++1z,想要完整的新功能和特性還是要自己編譯新版的編譯器。
Google LLVM 團隊主導者之一 Chandler Carruth 示範 Clang 的下載、編譯以及使用,還有 AddressSanitizer 和 Clang-Tidy 的使用。
三家主流編譯器中目前公認地表最強的為 Clang(編按:我 MSVC 流,這我不承認 😤),未來會一系列介紹 Clang 優化原理。
至於MSVC 派的朋友們可能對於 GCC 旗標的使用不太熟悉,個人推薦《21 世紀 C 語言》第一二章,這本書對於初學者很友善,由淺入深教編譯器旗標還有建置系統。(編按:Red Hat 的這篇〈Recommended compiler and linker flags for GCC〉也很不錯)
By Sidney Niu
Pacific++ 2017: Chandler Carruth "LLVM: A Modern, Open C++ Toolchain"
CppCon 2016: Jason Jurecka “Game engine using STD C++ 11"
暴雪工程師 Jason Jurecka 介紹遊戲引擎程式設計的細節,包含一個類別成員(Class Member)的順序與要注意資料結構對齊的問題、遊戲主迴圈和任務的排班設計。
臨界區段用 std::atomic ,執行緒池去任務佇列撈資料。有關重要的時序同步問題講者直接說不知道 std::chronostd::time 差別的人重回學校念書吧。(編按:台灣本科有教嗎?)
也有提到為了效能會大量地使用編譯時期(Compile-time)決定,未來也會慢慢介紹有關編譯時期決定的演講。
中英對照:類(class)、結構(struct)、對齊(alignment)、執行緒池(thread pool)、臨界區段(critical section)、佇列(queue)
By Sidney Niu
CppCon 2016: Jason Jurecka “Game engine using STD C++ 11"
開源專案
luna: Yet another web framework—this time in modern C++!
選書
Game Engine Black Book
WorkFlowy Tips
WorkFlowy + iPhone 語音輸入=懶人輸入法
WorkFlowy Academy from Frank Degenaar
想知道更多 WorkFlowy 撇步,請快步前往 WorkFlowy Tips 。還沒有 WorkFlowy 帳號?請用此連結申請加倍免費清單上限
還有還有,我在臉書開了一個以 WorkFlowy 為主題的社團——山姆的 WorkFlowy 大小撇步現在人很少,快來助拳!
💌 喜歡這一期的內容,請幫我按「👍」。不喜歡請按「👎」,並寫下你認為哪裡做得不好,你的回饋是我進步的動力。想要匿名舉報的話,我開了一個 Sarahah,歡迎使用,謝謝!
本報內含 Affiliate Link 連結若干,也就是我有機會從中獲益,賺點奶粉錢,希望有朝一日能因此日進斗金(誤)。若對這樣的作法有疑慮,請讓我知道或者直接退訂也行,我不會介意,你請別生氣。
解掉那種原本以為這輩子不可能解掉的臭蟲有什麼感覺?這就是了。
Did you enjoy this issue?
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