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


    作者: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

    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

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

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

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

    最后

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

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

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

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

  • 相关阅读:
    有用的网站
    RMVANNUAL matlab remove annual cycle of a time series
    [转载]grdcontour命令在GMT4下绘制等值线图
    Filter应用之-自动登录
    Filter应用之-验证用户是否已经登录
    Filter应用之2-设置某些页面缓存或是不缓存
    过虑器应用之1-设置request编码
    过滤器Filter
    java文件下载
    用COS实现文件上传
  • 原文地址:https://www.cnblogs.com/phyger/p/14029603.html
Copyright © 2020-2023  润新知