28

适合 C++ 新手学习的开源项目——在 GitHub 学编程

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzA5MzYyNzQ0MQ%3D%3D&%3Bmid=2247491550&%3Bidx=1&%3Bsn=2aa29c018d8c436fc58b99cbdcb5bfa3
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

IzAVbaQ.jpg!mobile

作者:HelloGitHub-小鱼干

俗话说:万事开头难,学习编程也是一样。在 HelloGitHub 的群里,经常遇到有小伙伴询问 编程语言如何入门 方面的问题,如:

  • 我要学习某一门编程语言,有什么开源项目可以推荐吗?

  • 我是某编程语言的新手,有什么练手的项目推荐吗?

  • 等等

See,这就是本系列文章的由来,我们希望学习各类编程语言的同学们,读( Mark )完我们的入门系列,可以找到学习的方向、系统地学习某一门语言,然后做个简单的小玩意,不只是  Hello World

《GitHub 上适合编程入门的项目》系列,共计 5 篇文章:

  1. C++ 篇

  2. Python 篇

  3. Go 篇

  4. Java 篇

  5. JavaScript 篇

以下为 C++ 篇 的内容。不管哪门编程语言,基础都是很重要的。所以我们要先从基本的语法和基础知识学习学起,一步步掌握这门语言。

一、基础

1.1 一个项目入门 C++ 足以:CPlusPlusThings

CPlusPlusThings 是国人开源一个 C++ 学习项目。它系统地将 C++ 学习分为了【基础进阶】、【实战系列】、【C++2.0 新特性】、【设计模式】和【STL 源码剖析】、【并发编程】、【C++ 惯用法】、【学习课程】、【工具】、【拓展】。

作为一个全面系统的 C++ 学习项目,CPlusPlusThings 是优秀的,它合理地安排了 10 Days 的实战部分,在实战中了解语法和函数用法,唯一不足的是,在注释部分有些不尽人意,对部分新手程序员并不是很友好。【基础进阶】部分内容:

  • const 那些事

  • static 那些事

  • decltype 那些事

  • 引用与指针那些事

  • 宏那些事

GitHub 地址→https://github.com/Light-City/CPlusPlusThings

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

C-Plus-Plus 是收录用 C++ 实现的各种算法的集合,并按照 MIT 许可协议进行授权。这些算法涵盖了计算机科学、数学和统计学、数据科学、机器学习、工程等各种主题。除外,你可能会发现针对同一目标的多个实现使用不同的算法策略和优化。

GitHub 地址→https://github.com/TheAlgorithms/C-Plus-Plus

二、进阶

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

modern-cpp-tutorial 是现代 C++ 教程,它的目的是提供关于现代 C++(2020 年前)的相关特性的全面介绍。除了介绍了代码之外,它还尽可能简单地介绍了其技术需求的历史背景,这对理解为什么会出现这些特性提供了很大的帮助。

GitHub 地址→https://github.com/changkun/modern-cpp-tutorial

RBFj2aY.png!mobile

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 地址→https://github.com/wuye9036/CppTemplateTutorial

三、动手实战

3.1 来实践一下:MyTinySTL

当你学习完 C++ 的“书本”知识后,是不是有些手痒了呢?MyTinySTL 这个注释详细、实践夯实基础的项目便是你 C++ 学习之旅的下一站。作为新手练习用途,MyTinySTL 的作者 Alinshans 用 C++11 重新复写了一个小型 STL(容器库+算法库)。代码结构清晰规范、包含中文文档与注释,并且自带一个简单的测试框架,适合 C++ 新手来实践一番。

GitHub 地址→https://github.com/Alinshans/MyTinySTL

3.2 重温同年俄罗斯方块:Tinytetris

Tinytetris 是一个用 C++ 编写的终端版俄罗斯方块游戏。它提供了两个版本的源码,分为注释版和库版,注释较多易于理解和学习。

GitHub 地址→https://github.com/taylorconor/tinytetris

iMnYNf.gif!mobile

3.3 学习下大佬们的代码:calculator

微软开源的 Windows 系统预装的计算器工具。该工具提供标准、科学、程序员计算器的功能,以及各种度量单位和货币之间的转换功能。快来看看微软工程师编写的代码吧!学习大厂的编码规范、项目结构之类的,提高阅读源码的能力。英文的项目且没有讲解部分,需要通过阅读源码学习,难度较高。

GitHub 地址→ https://github.com/microsoft/calculator

EjQrya7.png!mobile

最后

HelloGitHub 想让更多人爱上编程、开源,所以一直在尝试、摸索如何可以帮助到更多的人。我想试试 HelloGitHub 能不能组建一个 大学生开源俱乐部 你们的编程路才刚开始 HG 想陪你们走一段。

如果你是 在校大学生或研究生 热爱编程、开源,喜欢讨论和学习技术相关的内容,但是周围没有和你乐趣相投的小伙伴?那么来 HelloGitHub 的 大学生开源俱乐部 吧! 加微信号:HelloGitHub (备注:学校和专业) 不备注是不会通过的

3I7rmiR.jpg!mobile

关注公众号第一时间收到更新

「阅读原文」 发现更多 C++ 项目


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK