zoukankan      html  css  js  c++  java
  • 适合 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++ 项目

  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/phyger/p/14026891.html
Copyright © 2011-2022 走看看