C & C++
請參考C/C++ 入口網頁說明
如果您有撰寫C/C++心得相關文章, 想要與slack channel中的網友分享, 可以透過github issue來發佈你的心得分享, 發佈後會同步到slack channel , 要加入分享行列請來信與我聯絡 [email protected] 請註明C/C++
C & C++ 技術討論/知識管理共筆
Home Page: https://softnshare.wordpress.com/slack/cc/
C & C++
請參考C/C++ 入口網頁說明
如果您有撰寫C/C++心得相關文章, 想要與slack channel中的網友分享, 可以透過github issue來發佈你的心得分享, 發佈後會同步到slack channel , 要加入分享行列請來信與我聯絡 [email protected] 請註明C/C++
在這個討論串看到 https://news.ycombinator.com/item?id=11839332
Google C++ coding style guide
這個有趣的開源碼專案, #include 後,編譯出來的程式便擁有了包含 bootloader 在內的完整作業系統環境,佔用的空間極小,目前僅 707K 左右。理論上支援 x86 相容的硬體,亦支援 VirtualBox,方便開發、亂搞。
感覺相當適合 Embedded system,不過目前尚在 Prototype 階段。喜愛低階黑手環境的可以看看。
主要開發人員最近在 CppCast 說明 IncludeOS 的相關技術:
網址 https://www.facebook.com/luba.tang/posts/10210007355689417
所有的 C++ programmer 都應該被砍斷雙手,直到認識 OCP 之後才能接起來
大家有其他想法嗎?
不管是新手學習程式設計或舊生學習新的語式語言,Exercism 都是不錯的工具。雖然對新手來說,起步的門檻稍高,可能在準備環境階段就陣亡了。但也不全是壞事,讓學習者早點感受寫程式的「難處」。
Exercism 為一基於**「測試驅動(TDD)」** 理念所實作的程式語言學習框架。支援數十種程式語言,而且所有工具皆開源,有心人士可依需求自行加入新材料。
Exercism 事先準備了許多「功課」,學習者以通過測試為目標,取得小勝(small win),做為繼續向前的養分。
身邊有人想學程式設計,Exercism 是不錯的選擇。
Fix 是新的開源專案,一個微型 Issue Tracking System,目標是運行於類似 Raspberry Pi 的微型電腦上,部署容易,儲存格式為 Git-friendly,目前暫訂為純文字 。專案尚在初期開發階段,有趣的是,作者在專案一開始便陸續撰文,描述該專案的架構,為達到某功能選用哪些技術以及為什麼用某個函式庫。打算以 BDD 及 TDD 的方式進行開發,並充份運用 C++11/14 帶來的新功能。
開源碼搭配第一手文章,目前看到幾個有趣的地方:
其撰碼風格不會太偏門(是我的菜XD),感覺真是學習中階 C++ 的活教材。
由原始碼靜態分析工具(Static Code Analyzer)PVS-Studio 寫的系列文章,探討 C/C++ 撰寫 64-bit 程式常見的問題及原理。雖然年代有些久遠,觀念依然不變,值得一讀:
另外,PVS-Studio 最早是以分析 C/C++ 程式碼起家,後來支援 C# 並分析了幾個大型專案如 MonoDevelop, Xamarin.Forms ,分析的結果皆整理成文章,有興趣的朋友可追他們的 Medium:
截至前言:
The primary intended audience of this document is professional C++ developers who want
to understand bare metal development a little bit better, get to know how to use their
favourite programming language in an embedded environment, and probably bring their C++
skills to an “expert” level. Why professional?
快速瀏覽過,基本上是說明如何使用 C++ 開發崁入式系統(Embedded System),哪些功能可用,哪些不能碰(RTTI, Exception, etc),以及對比於 C 有什麼好處。
有些程式碼解析幾個 C++ 功能以及編譯後的 Assembly,說明要怎麼用,或為什麼不能用該些功能。全書約二百頁。
下載連結:https://www.gitbook.com/book/arobenko/bare_metal_cpp/details
https://tw.twincl.com/cpp/*652o
C++的網友大家對這篇文章有任何看法嗎?
這是一個用C寫在raspberry pi 上跑的簡單OS的教學,
github 有完整的範例code
我也還在看,對embeded 有興趣的可以參考看看
https://github.com/BrianSidebotham/arm-tutorial-rpi
免費的gitbook電子書, 聽說作者是高中開始做這件事
https://www.gitbook.com/book/samypesse/how-to-create-an-operating-system/details
這個C++ library包含的功能還不少
最佛心的應該是這個C++ library是portable Window/Linux/Mac OS X ,從以前聽portable到現在, 其實多多少少還是要針對OS做一些fine tune, 尤其是Thread這部分 , 有用過這個Library, 歡迎發表一下心得
請問新一代的C++11有沒有什麼好的入門教學?
和以前小時候學的東西差太多了XD
很多新的語法,讓程式寫起來簡潔很多
之後研所和工作之後,大量使用Java
覺得C++比較有門檻的地方是實戰時的一些library
像是STL用到容器和一些輔助RAII的語法,Boost有更多關於thread及async/sync機制
不過更多時候希望有一些像是Guava/Apache Common Library的東西,還有像Mockito等等的
之前學習C++只有寫過一些小程式(for pc和嵌入式系統),真實工作實戰時間很少
Mockito 我會建議使用 Google Testing Framework,裡頭包含了 googlemock 。使用方式可參考這篇。 http://blog.ez2learn.com/2009/01/21/try-google-unit-test-framework/
要我說 C++11 最實用的功能非 Lambda 莫屬。這一篇寫得不錯。 https://blog.gtwang.org/programming/lambda-expression-in-c11/?utm_content=bufferbb3ab&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
該作者有一些 C++ 有關的文章,可看看。 https://blog.gtwang.org/tag/c-cpp/
這本免費電子書也很不錯。
免費電子書C++ Best Practices
書裡介紹許多常見(或者有些根本想都沒想過)的 C++ 程式設計最佳實例,值得花時間讀。
線上文件我大多查 cppreference.com (可下載離線版)。文件中標明了哪些是 C++11, C++14, C++17 的功能,相當不錯。 http://en.cppreference.com/w/cpp
書本的話,我推薦《C++ Primer》第五版了,C++ 之父 S 先生的《The C++ Programming Language》我沒讀過,所以不清楚好壞。
要了解 STL 的話,我推薦《The C++ Standard Library》第二版包含了 C++11 的功能。 http://www.cppstdlib.com/
最後,我正在整理 C++ Library, Framework and Toolkit 專案,目前還處於ALPHA 階段,連結在此。 http://bit.ly/1tvsGnQ
最後的最後,我有訂閱一些 C++ 相關部落格,供參考。 http://feedly.com/mhtx
這本書可線上閱讀,完全免費。亦可付費購買電子書或實體書。
從遊戲程式設計的角度說明幾個設計範式。懂了 C++ 程式設計基礎後,由特定領域切入來學習更高階的程式設計技巧是不錯的學習路徑。
剛接觸「設計範式(Design Pattern)」容易因過於抽象導致學習效果差,甚至因此排斥設計範式。本書說明 Pattern 的方式是先說明應用情境,搭配圖文與程式碼解說,學起來比較踏實。
本書以「公開寫作」的方式進行。作者在撰寫本書初期即將內容公開於 GitHub,並接受外界的反饋,適時調整書的內容。
這個C++ library包含的功能還不少
最佛心的應該是這個C++ library是portable Window/Linux/Mac OS X ,從以前聽portable到現在, 其實多多少少還是要針對OS做一些fine tune, 尤其是Thread這部分 , 有用過這個Library, 歡迎發表一下心得
《�Game Programming Patterns》 作者的這篇文章提供一些實用觀點,讓你的程式碼較「難」出現讓人看了不怎麼舒服自己卻很 HIGH 的類別/函數/變數名稱。
其中一個例子是類別名稱(範例碼用的是 Dart 語言),例:
class WaffleObject;
作者這麼說:
Obviously it’s an object. Everything is an object. That’s kind of what “object-oriented” means (#4)
所以可將 WaffleObject 進一步縮成:
class Waffle;
「命名」是藝術,是專業。雖說個人喜好不同,但有一點我真心希望大家能一致同意,那就是「不要使用匈牙利命名法」。
https://github.com/dennis714/RE-for-beginners
這本免費的電子書可以滿足你想要了解反組譯程式, OS底層的原理, 等 '暗黑' 技術 , 裡面還包含了compiler, debugger等技術介紹, 要學這種硬工夫, 至少要有C/C++的基礎 , 甚至微處理機, 組合語言都要懂
有讀過這本書的slack網友, 歡迎寫一下你的心得
CppCast 主持人之一 Jason Turner 寫了這本《C++ Best Practices》,然後長大成一個付費教學影片《Learning C++ Best Practices》。
書裡介紹許多常見(或者有些根本想都沒想過)的 C++ 程式設計最佳實例,值得花時間讀。
這是一個開源的物理模擬引擎,
可以模擬各種剛體的**及碰撞、粒子、softbody...等等
之前在寫遊戲時有用到,
不過我認為應該有更廣泛的用途,
例如開發機器人或虛擬實境應該都滿有用的
收集了許多 C++ 專案,分門別類,提供連結。看 GitHub commit 似乎有持續更新。
我也在做類似的東西,不過是用 WorkFlowy 來做。好處是可用「標籤(Tag)」來過濾與搜尋,快速找到需要的專案。除了提供專案連結,未來的計劃是提供簡短的說明與重要專案的使用心得,甚至提供評等。
若有優質專案沒列在上頭的,歡迎提供連結。可於此回覆或增加條目於下面這個 WorkFlowy 共享清單:
《Web development in C: crazy? Or crazy like a fox?》 作者先是感嘆當前世道 Web Development 沒 C 語言的份。接著列舉了許多以 C 語言寫就的專案,對應到 Web Development 的各個角色。
多數作者提的專案我都沒聽過,整理如下:
作者提到這個 Heroku buildpack 可以讓你建 dyno 放用 C 寫的程式。
有趣的專案不少吶。
由原始碼靜態分析工具(Static Code Analyzer)PVS-Studio 寫的系列文章,探討 C/C++ 撰寫 64-bit 程式常見的問題及原理。雖然年代有些久遠,觀念依然不變,值得一讀:
另外,PVS-Studio 最早是以分析 C/C++ 程式碼起家,後來支援 C# 並分析了幾個大型專案如 MonoDevelop, Xamarin.Forms ,分析的結果皆整理成文章,有興趣的朋友可追他們的 Medium:
台灣開發者陳仁乾的opensource作品
本書集結多篇 JetBrains 家 Upsource 部落格文章,探討 Code Review 時應該看哪裡,該怎麼看。
理論上 Code Review 有助提昇程式碼品質,實務上,效果因人而異。有 Code Review 經驗的人 Review 的成效會比沒有經驗的人好。讀這本小書,吸取別人的經驗,也是好事。
書裡也簡短說明 SOLID Principles。「Code Reviewer 懂 SOLID,讓程式碼更 SOLID」,是這樣的概念。
註:書中的範例碼使用 Java,但不影響閱讀。
產出的結果相當讚,感覺有點像 Chromium Code Search,適合愉快的心情。專案本身也是使用 C++ 寫就,優秀!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.