適合 C++ 新手學習的開源項目——在 GitHub 學編程

做者:HelloGitHub-小魚乾git

俗話說:萬事開頭難,學習編程也是同樣。在 HelloGitHub 的羣裏,常常遇到有小夥伴詢問編程語言如何入門方面的問題,如:程序員

  • 我要學習某一門編程語言,有什麼開源項目能夠推薦嗎?
  • 我是某編程語言的新手,有什麼練手的項目推薦嗎?
  • 等等

See,這就是本系列文章的由來,咱們但願學習各種編程語言的同窗們,讀(Mark)完咱們的入門系列,能夠找到學習的方向、系統的學習某一門語言,而後作個簡單的小玩意,不僅是 Hello Worldgithub

《GitHub 上適合編程入門的項目》系列,共計 5 篇文章:算法

  1. C++ 篇
  2. Python 篇
  3. Go 篇
  4. Java 篇
  5. JavaScript 篇

如下爲 C++ 篇 的內容。無論哪門編程語言,基礎都是很重要的。因此咱們要先從基本的語法和基礎知識學習學起,一步步掌握這門語言。編程

1、基礎

1.1 一個項目入門 C++ 足以:CPlusPlusThings

CPlusPlusThings 是國人開源一個 C++ 學習項目。它系統地將 C++ 學習分爲了【基礎進階】、【實戰系列】、【C++2.0 新特性】、【設計模式】和【STL 源碼剖析】、【併發編程】、【C++ 慣用法】、【學習課程】、【工具】、【拓展】。設計模式

做爲一個全面系統的 C++ 學習項目,CPlusPlusThings 是優秀的,它合理地安排了 10 Days 的實戰部分,在實戰中瞭解語法和函數用法,惟一不足的是,在註釋部分有些不盡人意,對部分新手程序員並非很友好。【基礎進階】部份內容:markdown

  • const 那些事
  • static 那些事
  • decltype 那些事
  • 引用與指針那些事
  • 宏那些事

GitHub 地址→github.com/Light-City/…數據結構

1.2 基礎部分之算法:C-Plus-Plus

C-Plus-Plus 是收錄用 C++ 實現的各類算法的集合,並按照 MIT 許可協議進行受權。這些算法涵蓋了計算機科學、數學和統計學、數據科學、機器學習、工程等各類主題。除外,你可能會發現針對同一目標的多個實現使用不一樣的算法策略和優化。併發

GitHub 地址→github.com/TheAlgorith…框架

2、進階

2.1 現代 C++:modern-cpp-tutorial

modern-cpp-tutorial 是現代 C++ 教程,它的目的是提供關於現代 C++(2020 年前)的相關特性的全面介紹。除了介紹了代碼以外,它還儘量簡單地介紹了其技術需求的歷史背景,這對理解爲何會出現這些特性提供了很大的幫助。

GitHub 地址→github.com/changkun/mo…

2.2 進階指南:CppTemplateTutorial

CppTemplateTutorial 爲中文的 C++ Template 的教學指南。與知名書籍 C++ Templates 不一樣,該系列教程將 C++ Templates 做爲一門圖靈完備的語言來說授,以求幫助讀者對 Meta-Programming 融會貫通。本項目寫做初衷,就是經過 「編程語言」 的視角,介紹一個簡單、清晰的 「模板語言」。我會盡量地將模板的諸多要素連串起來,用一些簡單的例子幫助讀者學習這門 「語言」,讓讀者在編寫、閱讀模板代碼的時候,能像 if(exp) { dosomething(); } 同樣的信手拈來,讓 「模板元編程」 技術成爲讀者牢固掌握、可觸類旁通的有用技能。

適合熟悉 C++ 的基本語法、使用過 STL、熟悉一些經常使用的算法,以及遞歸等程序設計方法的 C++ 學習者閱讀。雖然項目章節文章寫的深刻淺出,不過惟一的遺憾是還沒有完成全部章節內容。進度以下:

  • 0.前言
  • 1.Template 的基本語法
  • 2.模板元編程基礎
  • 3.深刻理解特化與偏特化
  • 4.元編程下的數據結構與算法 (還沒有開始)
  • 5.模板的進階技巧(還沒有開始)
  • 6.模板的威力:從 foreach, transform 到 Linq(還沒有開始)
  • 7.結語:討論有益,爭端無用(還沒有開始)

GitHub 地址→github.com/wuye9036/Cp…

3、動手實戰

3.1 來實踐一下:MyTinySTL

當你學習完 C++ 的「書本」知識後,是否是有些手癢了呢?MyTinySTL 這個註釋詳細、實踐夯實基礎的項目即是你 C++ 學習之旅的下一站。做爲新手練習用途,MyTinySTL 的做者 Alinshans 用 C++11 從新複寫了一個小型 STL(容器庫+算法庫)。代碼結構清晰規範、包含中文文檔與註釋,而且自帶一個簡單的測試框架,適合 C++ 新手來實踐一番。

GitHub 地址→github.com/Alinshans/M…

3.2 重溫同年俄羅斯方塊:Tinytetris

Tinytetris 是一個用 C++ 編寫的終端版俄羅斯方塊遊戲。它提供了兩個版本的源碼,分爲註釋版和庫版,註釋較多易於理解和學習。

GitHub 地址→github.com/taylorconor…

3.3 學習下大佬們的代碼:calculator

微軟開源的 Windows 系統預裝的計算器工具。該工具提供標準、科學、程序員計算器的功能,以及各類度量單位和貨幣之間的轉換功能。快來看看微軟工程師編寫的代碼吧!學習大廠的編碼規範、項目結構之類的,提升閱讀源碼的能力。英文的項目且沒有講解部分,須要經過閱讀源碼學習,難度較高。

GitHub 地址→github.com/microsoft/c…

最後

HelloGitHub 想讓更多人愛上編程、開源,因此一直在嘗試、摸索如何能夠幫助到更多的人。我想試試 HelloGitHub 能不能組建一個大學生開源俱樂部大家的編程路纔剛開始 HG 想陪大家走一段。

若是你是在校大學生或研究生熱愛編程、開源,喜歡討論和學習技術相關的內容,可是周圍沒有和你樂趣相投的小夥伴?那麼來 HelloGitHub 的大學生開源俱樂部吧!

相關文章
相關標籤/搜索