經(jīng)驗(yàn)分享:適合 C++ 新手學(xué)習(xí)的開源項(xiàng)目(基礎(chǔ)到進(jìn)階實(shí)戰(zhàn))
俗話說:萬事開頭難,學(xué)習(xí)編程也是一樣。在我粉絲學(xué)習(xí)群里,經(jīng)常遇到有小伙伴詢問編程語言如何入門方面的問題,如:
我要學(xué)習(xí)某一門編程語言,有什么開源項(xiàng)目可以推薦嗎?
我是某編程語言的新手,有什么練手的項(xiàng)目推薦嗎?
諸如此類。

See,這就是本系列文章的由來,我們希望學(xué)習(xí)各類編程語言的同學(xué)們,讀(Mark)完我們的入門系列,可以找到學(xué)習(xí)的方向、系統(tǒng)的學(xué)習(xí)某一門語言,然后做個(gè)簡單的小玩意,不只是Hello World。
不管哪門編程語言,基礎(chǔ)都是很重要的。所以我們要先從基本的語法和基礎(chǔ)知識學(xué)習(xí)學(xué)起,一步步掌握這門語言。
一、基礎(chǔ)
1.1 一個(gè)項(xiàng)目入門 C++ 足以:CPlusPlusThings
CPlusPlusThings 是國人開源一個(gè) C++ 學(xué)習(xí)項(xiàng)目。它系統(tǒng)地將 C++ 學(xué)習(xí)分為了【基礎(chǔ)進(jìn)階】、【實(shí)戰(zhàn)系列】、【C++2.0 新特性】、【設(shè)計(jì)模式】和【STL 源碼剖析】、【并發(fā)編程】、【C++ 慣用法】、【學(xué)習(xí)課程】、【工具】、【拓展】。
作為一個(gè)全面系統(tǒng)的 C++ 學(xué)習(xí)項(xiàng)目,CPlusPlusThings 是優(yōu)秀的,它合理地安排了 10 Days 的實(shí)戰(zhàn)部分,在實(shí)戰(zhàn)中了解語法和函數(shù)用法,唯一不足的是,在注釋部分有些不盡人意,對部分新手程序員并不是很友好。【基礎(chǔ)進(jìn)階】部分內(nèi)容:
const 那些事
static 那些事
decltype 那些事
引用與指針那些事
宏那些事
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2FLight-City%2FCPlusPlusThings

1.2 基礎(chǔ)部分之算法:C-Plus-Plus
C-Plus-Plus 是收錄用 C++ 實(shí)現(xiàn)的各種算法的集合,并按照 MIT 許可協(xié)議進(jìn)行授權(quán)。這些算法涵蓋了計(jì)算機(jī)科學(xué)、數(shù)學(xué)和統(tǒng)計(jì)學(xué)、數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、工程等各種主題。除外,你可能會發(fā)現(xiàn)針對同一目標(biāo)的多個(gè)實(shí)現(xiàn)使用不同的算法策略和優(yōu)化。
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2FTheAlgorithms%2FC-Plus-Plus
二、進(jìn)階
2.1 現(xiàn)代 C++:modern-cpp-tutorial
modern-cpp-tutorial 是現(xiàn)代 C++ 教程,它的目的是提供關(guān)于現(xiàn)代 C++的相關(guān)特性的全面介紹。除了介紹了代碼之外,它還盡可能簡單地介紹了其技術(shù)需求的歷史背景,這對理解為什么會出現(xiàn)這些特性提供了很大的幫助。
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fchangkun%2Fmodern-cpp-tutorial

2.2 進(jìn)階指南:CppTemplateTutorial
CppTemplateTutorial 為中文的 C++ Template 的教學(xué)指南。與知名書籍 C++ Templates 不同,該系列教程將 C++ Templates 作為一門圖靈完備的語言來講授,以求幫助讀者對 Meta-Programming 融會貫通。本項(xiàng)目寫作初衷,就是通過 “編程語言” 的視角,介紹一個(gè)簡單、清晰的 “模板語言”。我會盡可能地將模板的諸多要素連串起來,用一些簡單的例子幫助讀者學(xué)習(xí)這門 “語言”,讓讀者在編寫、閱讀模板代碼的時(shí)候,能像if(exp) { dosomething(); }一樣的信手拈來,讓 “模板元編程” 技術(shù)成為讀者牢固掌握、可舉一反三的有用技能。
適合熟悉 C++ 的基本語法、使用過 STL、熟悉一些常用的算法,以及遞歸等程序設(shè)計(jì)方法的 C++ 學(xué)習(xí)者閱讀。雖然項(xiàng)目章節(jié)文章寫的深入淺出,不過唯一的遺憾是尚未完成所有章節(jié)內(nèi)容。進(jìn)度如下:
0.前言
1.Template 的基本語法
2.模板元編程基礎(chǔ)
3.深入理解特化與偏特化
4.元編程下的數(shù)據(jù)結(jié)構(gòu)與算法 (尚未開始)
5.模板的進(jìn)階技巧(尚未開始)
6.模板的威力:從 foreach, transform 到 Linq(尚未開始)
7.結(jié)語:討論有益,爭端無用(尚未開始)
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fwuye9036%2FCppTemplateTutorial
三、動手實(shí)戰(zhàn)
3.1 來實(shí)踐一下:MyTinySTL
當(dāng)你學(xué)習(xí)完 C++ 的“書本”知識后,是不是有些手癢了呢?MyTinySTL 這個(gè)注釋詳細(xì)、實(shí)踐夯實(shí)基礎(chǔ)的項(xiàng)目便是你 C++ 學(xué)習(xí)之旅的下一站。作為新手練習(xí)用途,MyTinySTL 的作者 Alinshans 用 C++11 重新復(fù)寫了一個(gè)小型 STL(容器庫+算法庫)。代碼結(jié)構(gòu)清晰規(guī)范、包含中文文檔與注釋,并且自帶一個(gè)簡單的測試框架,適合 C++ 新手來實(shí)踐一番。
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2FAlinshans%2FMyTinySTL
3.2 重溫同年俄羅斯方塊:Tinytetris
Tinytetris 是一個(gè)用 C++ 編寫的終端版俄羅斯方塊游戲。它提供了兩個(gè)版本的源碼,分為注釋版和庫版,注釋較多易于理解和學(xué)習(xí)。
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Ftaylorconor%2Ftinytetris

3.3 學(xué)習(xí)下大佬們的代碼:calculator
微軟開源的 Windows 系統(tǒng)預(yù)裝的計(jì)算器工具。該工具提供標(biāo)準(zhǔn)、科學(xué)、程序員計(jì)算器的功能,以及各種度量單位和貨幣之間的轉(zhuǎn)換功能??靵砜纯次④浌こ處熅帉懙拇a吧!學(xué)習(xí)大廠的編碼規(guī)范、項(xiàng)目結(jié)構(gòu)之類的,提高閱讀源碼的能力。英文的項(xiàng)目且沒有講解部分,需要通過閱讀源碼學(xué)習(xí),難度較高。
GitHub 地址→https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fcalculator

最后
咱一直想讓更多人愛上C/C++編程,所以一直在嘗試、摸索如何可以幫助到更多的人。
如果你是在校大學(xué)生或研究生熱愛編程、開源,喜歡討論和學(xué)習(xí)技術(shù)相關(guān)的內(nèi)容,但是周圍沒有和你樂趣相投的小伙伴?可以來我粉絲群哦~

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)最重要的是你可以在群里面交流提問編程問題哦!
編程學(xué)習(xí)書籍分享:

編程視頻分享:
