GithubHelp home page GithubHelp logo

candcpp's Introduction

C/C++ 程式語言知識管理與學習資源共筆

C & C++

參加Soft & Share Slack討論群組

請參考C/C++ 入口網頁說明

使用github issue寫微部落格

如果您有撰寫C/C++心得相關文章, 想要與slack channel中的網友分享, 可以透過github issue來發佈你的心得分享, 發佈後會同步到slack channel , 要加入分享行列請來信與我聯絡 [email protected] 請註明C/C++

candcpp's People

Contributors

maoyang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

candcpp's Issues

IncludeOS, an includable, minimal unikernel operating system for C++ services running in the cloud.

這個有趣的開源碼專案, #include 後,編譯出來的程式便擁有了包含 bootloader 在內的完整作業系統環境,佔用的空間極小,目前僅 707K 左右。理論上支援 x86 相容的硬體,亦支援 VirtualBox,方便開發、亂搞。

感覺相當適合 Embedded system,不過目前尚在 Prototype 階段。喜愛低階黑手環境的可以看看。

主要開發人員最近在 CppCast 說明 IncludeOS 的相關技術:

進取型的程式語言學習利器— Exercism

不管是新手學習程式設計或舊生學習新的語式語言,Exercism 都是不錯的工具。雖然對新手來說,起步的門檻稍高,可能在準備環境階段就陣亡了。但也不全是壞事,讓學習者早點感受寫程式的「難處」。

Exercism 為一基於**「測試驅動(TDD)」** 理念所實作的程式語言學習框架。支援數十種程式語言,而且所有工具皆開源,有心人士可依需求自行加入新材料。

Exercism 事先準備了許多「功課」,學習者以通過測試為目標,取得小勝(small win),做為繼續向前的養分。

身邊有人想學程式設計,Exercism 是不錯的選擇。

Fix, A lightweight issue tracker

Fix 是新的開源專案,一個微型 Issue Tracking System,目標是運行於類似 Raspberry Pi 的微型電腦上,部署容易,儲存格式為 Git-friendly,目前暫訂為純文字 。專案尚在初期開發階段,有趣的是,作者在專案一開始便陸續撰文,描述該專案的架構,為達到某功能選用哪些技術以及為什麼用某個函式庫。打算以 BDD 及 TDD 的方式進行開發,並充份運用 C++11/14 帶來的新功能。

開源碼搭配第一手文章,目前看到幾個有趣的地方:

  • 以 Conan 來管理相依的套件
  • 以 Catch 做 Unit Test (TDD)
  • 以 Python Behave 做 BDD

其撰碼風格不會太偏門(是我的菜XD),感覺真是學習中階 C++ 的活教材。

Lessons on the development of 64-bit C/C++ applications

由原始碼靜態分析工具(Static Code Analyzer)PVS-Studio 寫的系列文章,探討 C/C++ 撰寫 64-bit 程式常見的問題及原理。雖然年代有些久遠,觀念依然不變,值得一讀:

另外,PVS-Studio 最早是以分析 C/C++ 程式碼起家,後來支援 C# 並分析了幾個大型專案如 MonoDevelop, Xamarin.Forms ,分析的結果皆整理成文章,有興趣的朋友可追他們的 Medium:

免費電子書《Practical Guide to Bare Metal C++》

截至前言:

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

DLib C++ Library - 包山包海又跨平台的C++函式庫

DLib C++ Library

這個C++ library包含的功能還不少

  • 機械學習
  • 數值運算演算法
  • Graphical Model
  • 影像處理
  • Threading
  • Networking
  • 資料壓縮
  • 類似log4j的logger
  • XML parser

最佛心的應該是這個C++ library是portable Window/Linux/Mac OS X ,從以前聽portable到現在, 其實多多少少還是要針對OS做一些fine tune, 尤其是Thread這部分 , 有用過這個Library, 歡迎發表一下心得

請問新一代的C++11有沒有什麼好的入門教學,以及常用的Common Library與Testing Library?

Question from @johnteee

請問新一代的C++11有沒有什麼好的入門教學?
和以前小時候學的東西差太多了XD
很多新的語法,讓程式寫起來簡潔很多
之後研所和工作之後,大量使用Java
覺得C++比較有門檻的地方是實戰時的一些library
像是STL用到容器和一些輔助RAII的語法,Boost有更多關於thread及async/sync機制
不過更多時候希望有一些像是Guava/Apache Common Library的東西,還有像Mockito等等的
之前學習C++只有寫過一些小程式(for pc和嵌入式系統),真實工作實戰時間很少

Answer from @mht

Mockito Substitutions

Mockito 我會建議使用 Google Testing Framework,裡頭包含了 googlemock 。使用方式可參考這篇。 http://blog.ez2learn.com/2009/01/21/try-google-unit-test-framework/

C++11

要我說 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

要了解 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

歡迎加入Soft & Share C/C++ 討論channel

免費電子書《Game Programming Patterns》

這本書可線上閱讀,完全免費。亦可付費購買電子書或實體書。

從遊戲程式設計的角度說明幾個設計範式。懂了 C++ 程式設計基礎後,由特定領域切入來學習更高階的程式設計技巧是不錯的學習路徑。

剛接觸「設計範式(Design Pattern)」容易因過於抽象導致學習效果差,甚至因此排斥設計範式。本書說明 Pattern 的方式是先說明應用情境,搭配圖文與程式碼解說,學起來比較踏實。

本書以「公開寫作」的方式進行。作者在撰寫本書初期即將內容公開於 GitHub,並接受外界的反饋,適時調整書的內容。

DLib C++ Library - 包山包海又跨平台的C++函式庫

DLib C++ Library

這個C++ library包含的功能還不少

  • 機械學習
  • 數值運算演算法
  • Graphical Model
  • 影像處理
  • Threading
  • Networking
  • 資料壓縮
  • 類似log4j的logger
  • XML parser

最佛心的應該是這個C++ library是portable Window/Linux/Mac OS X ,從以前聽portable到現在, 其實多多少少還是要針對OS做一些fine tune, 尤其是Thread這部分 , 有用過這個Library, 歡迎發表一下心得

〈Long Names Are Long〉

《�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;

「命名」是藝術,是專業。雖說個人喜好不同,但有一點我真心希望大家能一致同意,那就是「不要使用匈牙利命名法」。

免費電子書《C++ Best Practices》

CppCast 主持人之一 Jason Turner 寫了這本《C++ Best Practices》,然後長大成一個付費教學影片《Learning C++ Best Practices》。

書裡介紹許多常見(或者有些根本想都沒想過)的 C++ 程式設計最佳實例,值得花時間讀。

Awesome C++, A curated list of awesome C/C++ frameworks, libraries, resources, and shiny things.

收集了許多 C++ 專案,分門別類,提供連結。看 GitHub commit 似乎有持續更新。

我也在做類似的東西,不過是用 WorkFlowy 來做。好處是可用「標籤(Tag)」來過濾搜尋,快速找到需要的專案。除了提供專案連結,未來的計劃是提供簡短的說明與重要專案的使用心得,甚至提供評等。

若有優質專案沒列在上頭的,歡迎提供連結。可於此回覆或增加條目於下面這個 WorkFlowy 共享清單:

這樣的加料是合理的嗎?

剛剛在逛 g+ 的時候發現到這篇,提到 Visual Studio C++ 的執行碼裡頭加了 telemetry data 這個東西,想跟大家討論這樣嚴重嗎? 這樣加東西合理嗎?

Web development in C: crazy? Or crazy like a fox?

《Web development in C: crazy? Or crazy like a fox?》 作者先是感嘆當前世道 Web Development 沒 C 語言的份。接著列舉了許多以 C 語言寫就的專案,對應到 Web Development 的各個角色。

多數作者提的專案我都沒聽過,整理如下:

作者提到這個 Heroku buildpack 可以讓你建 dyno 放用 C 寫的程式。

有趣的專案不少吶。

Lessons on the development of 64-bit C/C++ applications

由原始碼靜態分析工具(Static Code Analyzer)PVS-Studio 寫的系列文章,探討 C/C++ 撰寫 64-bit 程式常見的問題及原理。雖然年代有些久遠,觀念依然不變,值得一讀:

另外,PVS-Studio 最早是以分析 C/C++ 程式碼起家,後來支援 C# 並分析了幾個大型專案如 MonoDevelop, Xamarin.Forms ,分析的結果皆整理成文章,有興趣的朋友可追他們的 Medium:

免費電子書《What to Look for in a Code Review》

本書集結多篇 JetBrains 家 Upsource 部落格文章,探討 Code Review 時應該看哪裡,該怎麼看。

理論上 Code Review 有助提昇程式碼品質,實務上,效果因人而異。有 Code Review 經驗的人 Review 的成效會比沒有經驗的人好。讀這本小書,吸取別人的經驗,也是好事。

書裡也簡短說明 SOLID Principles。「Code Reviewer 懂 SOLID,讓程式碼更 SOLID」,是這樣的概念。

註:書中的範例碼使用 Java,但不影響閱讀。

http://leanpub.com/whattolookforinacodereview

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.