GithubHelp home page GithubHelp logo

candcpp's Issues

〈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;

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

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, 歡迎發表一下心得

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:

這樣的加料是合理的嗎?

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

請問新一代的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,並接受外界的反饋,適時調整書的內容。

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:

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

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

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

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

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

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

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

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

免費電子書《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, 歡迎發表一下心得

免費電子書《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

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

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

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

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

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

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 寫的程式。

有趣的專案不少吶。

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

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

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

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.