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?
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