Skip to content

Latest commit

 

History

History
175 lines (131 loc) · 10.6 KB

File metadata and controls

175 lines (131 loc) · 10.6 KB

一步一步学C++

本教程提供了一个编程能力的综合学习引导,预期需要达到的《能力和技能》主要包括:

一、如何学习C++

大部分的飞行器控制、计算机视觉、机器学习算法的底层代码通过C++来实现,另外经典的算法教程通过C/C++来讲授,因此需要把C++学好。但是C++非常博大精深,很难一上来就全部学会,因此需要采用 循环迭代 的学习方法,即通过多次from the shallower to the deeper的学习过程实现高效率的学习。比较高级、复杂的语言特性不用一上来就去学,可以等基本语法、常用数据结构学的比较扎实之后再着手高级的语法、技巧等。或者等基本语法、用法学完之后,在做练习题目的时候琢磨高级语法特性、技巧,体会为什么要设计这些高级用法,这样的学习有的放矢,效率更高。

主要的学习阶段和步骤分为如下的8个阶段,可以同时进行两个或以上的内容学习和练习,从而提高整体的学习效率。

需要在2周-3周完成:

  • 找一本C++的书 (教材就可以,或者如下的资料),将其中的基本内容快速过一遍(大约4-8天)
  • 在C++基本用法的同时开始编程练习,例如书每一部分的练习题,或者参考《编程练习题》
  • 将其中的练习题做一遍(大约2周,给自己限定一个时间,必须快速完成)
  • 在学习过程考虑,如何更有效的编程,如何提高debug能力
  • 资料(可以使用在线的教程,或者自己找比较合适的):

需要在3周-6周完成:

需要在3周-6周完成:

需要在2周-4周完成:

  • 可以思考一下,如何将所学的编程知识去解决一些实际问题
  • 通过这个综合练习,运用所学的知识解决一个或者多个实际问题,从而锻炼系统性解决问题的能力,并提高思维水平
  • 如果自己想不到太好的例子,可以参考所列的:《综合练习例子程序》

需要在2周-4周完成:

  • 如何把自己代码写的更规范:命名、格式、函数、类等。
    • 参考《编码规范》,将自己写过的代码按照规范进行格式、写法的调整
  • 琢磨如何将前面所写的代码进行重构,如何提高代码的复用能力
    • 思考程序哪里写的不好,不容易理解,如何才能更好理解
    • 程序是否结构不清晰,如何分割成更好的函数、类
    • 思考那些函数、类是可以复用的,可以写成头文件
  • 如何利用CMakePICMake将所有的代码组织起来,一次将自己编写的代码自动编译出来
    • 将自己C++(Stage1),数据结构(Stage2),综合练习项目(Stage4)的程序用CMake组织起来
  • 更进一步学习IDE的使用
  • 研究、学习如何将常用的函数、类组织到一个代码库,后续直接使用
    • 分析哪些函数、类可以复用,将可以复用的写成库
  • 如何让代码更清晰易懂,在什么地方用什么设计模式
    • 分析程序常用几种写法、模式,学习设计模式
    • 按照设计模式的方法,将自己的程序优化一下
  • 掌握多种编程工具的用法
  • 在用的过程多琢磨技巧,并不断总结

如果没有学过操作系统、计算机原理、嵌入式系统、编译原理、计算机网络等课程,可以快速学习这方面的知识,学过这方面的知识会提升大家对开发大型、面向实用系统的开发能力。主要包括内容包括

需要在2周-4周完成,为更好的提高自己的能力建议完成:

  • 在学习基本工具的基础上,通过完成一个更复杂一点的项目,将编程语言、数据结构、工具、Debug、设计模式等多种技能进行综合练习,巩固所学的知识和技能。

需要在2周-4周完成,为更好的提高自己的能力建议完成:

  • 主要学习C++ 11, C++14, C++20等最新功能、函数。
  • 目前主流的高端项目使用了大量的高级C++技巧,因此为了能编写复杂软件系统,建议好好学习一下高级C++
  • AI编程将起到越来越重要的作用,因此有必要好好琢磨并学习AI编程的思路、技巧等

1.9 恭喜通关!

如果你能坚持到这个阶段,说明你编程功力很强了!可以自由遨游于机器的世界,充分发挥你的能力去创造奇迹!

二、相关学习资料参考

在上述内容学习完成之后,可以进行机器学习、计算机视觉方面的学习与研究,具体的资料可以参考:

  1. 机器学习教程与作业
  2. 《一步一步学SLAM》
  3. 《一步一步学ROS》
  4. 飞行器智能感知与控制实验室-研究课题
  5. 编程代码参考、技巧集合 (内部资料)
    • 可以在这个代码、技巧集合中找到某项功能的示例,从而加快自己代码的编写

其他主要的程序库有:

  • Svar - 变量容器、插件管理
  • GSLAM - GSLAM,视觉计算库

2.1 工具的使用教程等

2.2 参考资料