IE盒子

搜索
查看: 106|回复: 1

C++ 学习路线:入门篇

[复制链接]

3

主题

6

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2022-12-26 01:34:47 | 显示全部楼层 |阅读模式
相关文章:

学习新知识有两个关键:快速上手、完整的知识体系,两者缺一不可:上手慢会打击初学者的积极性,产生劝退效应;而没有完整的知识体系,初学者就是盲人摸象,想要进阶深入就变得困难重重,只会长期停留在入门阶段。我在对比多种学习方法后,认为网课是能够兼顾这两点的好方法,首先网课一定是成体系的,名校教授准备的课程会涉及各个知识点,此外网课通过高频且较简单的练习巩固知识,符合人的认知曲线,提高学习效率。

语言本身
初学C++我推荐学堂在线上清华大学郑莉老师的两门课程:C++语言程序设计基础,C++语言程序设计进阶。在讲课过程中会有弹出的选择、填空题来巩固知识点,每一章结束一般会有三道编程题来进行练习。通过高频且难度不大的练习,将陡峭的学习曲线拉平,进度页面可以看到学习完成的进度,带给大家成就感。我把自己学这门课时的课后习题放在了Github上供大家参考:C++语言程序设计课后习题(https://github.com/Yu-Xiaoxian/c-plus-assignment)。学完这门课程就会对C++的特性有了整体的了解,并且能够上手编写一些简单的程序,如果想练手的话,可以上Leetcode刷一些Esay题目来练手。

这部分主要掌握的知识点是:

  • 基础语法:变量、条件、循环、字符串、数组、函数
  • 指针操作、内存管理:这两项是C/C++的灵魂,是这门语言经久不衰的关键,但这也是一把双刃剑,用的好可以极大提高程序运行的速率,用不好会导致内存泄漏甚至程序崩溃
  • 面向对象编程:类的定义与使用,继承与派生,这项特性保证了代码良好的复用和封装,是大型项目开发的必备因素

掌握编程语言后,就要跟操作系统打交道了。
应用实践
Windows 和 Linux 是操作系统的两大阵营,大家可以根据自己的需求进行选择。在Windows下编程的同学可以跳过这个部分,因为Visual Studio (Community社区版) 功能已经足够强大,不需要进行任何配置上手即用,关键还是免费的!这里说一声微软牛[哔——]。

如果需要在Linux 下编程的同学,我推荐学堂在线上清华大学乔林老师的课程:基于Linux的C++。学过郑莉老师的C++,乔林老师的这门课程就没有必要全部看下来了,因为前11讲内容都是在重复C++的语言特性,大家只要关注12讲的内容:Linux系统编程基础,系统性的了解 Linux 下编程的特点。后面三章感兴趣的话也可看一看:13.进程编程,14.线程编程,15.网络编程,但不学也不会有什么问题。

这门课程的用户体验没有郑莉老师的课程那么友好,不过用来系统性掌握Linux系统下的编程操作已经足够了。乔林老师讲解并不详细,但胜在体系完整,能够用很短的篇幅帮初学者建立对 Linux 系统完整的认知,这是我推荐这门课程的原因。因为讲解不够详细,遇到不懂问题需要结合搜索引擎进行学习。
这部分主要掌握的知识点是:

  • 操作系统下软件的编译与执行:编译器、makefile
  • 常用的系统调用:system, getenv等

软件设计
算法与数据结构、计算机网络、操作系统,是计算机考研必备的三门课程,也是整个计算机的基石。修炼好这三部分知识的程序员就像掌握了深厚的内功,无论是学习其他语言还是算法,都会更加得心应手,事半功倍。

1 算法与数据结构
入门阶段不需要花费大量的精力对多种多样的算法和数据结构进行详尽的了解,但是需要掌握基本的算法分析手段,以及算法研究需要解决的问题。这里推荐学堂在线上清华大学邓俊辉老师的课程:数据结构(上),只需要学习第一章绪论部分就可以。后续的章节可以在深入阶段再进行深挖。
需要掌握的知识点:

  • 使用大O记号对算法的复杂度进行分析。
2 计算机网络
对于入门而言,这部分内容完全可以略过。只要实践中不涉及网络编程,就可以暂时不做了解。如果需要了解的话,首先应该掌握TCP/IP的五层网络结构,当遇到网络问题时,能够快速定位是哪一层出了问题,然后快速排查。
知识要点:

  • TCP/IP五层网络结构
  • 常用传输层协议:TCP UDP
  • 常用应用层协议:HTTP
3 操作系统
入门阶段并不需要对操作系统有多么深入的了解,只需要对计算机的硬件结构有初步的认识,了解程序从编译到执行的具体过程,了解堆栈的概念以及函数调用等流程。这部分内容不需要专门学习,我建议在学习C++语言的过程中,选取合适的教材进行学习,比如《C++程序设计》(Y.Daniel Liang)这本书在介绍C++的过程中,对操作系统有简单的介绍,可以在学习过程中加以了解。刚开始没看懂也没有关系,等语言学一段时间再回来看,相信会有更深的理解。
知识要点:

  • 计算机体系结构:CPU,内存,硬盘,I/O设备
  • 内存堆栈与函数调用的关系
  • 程序编译的流程:编辑→编译→链接→执行
结语
C++是一门高深的语言,学习使用将近3年我也不敢说自己完全掌握了它,以上学习路线是我个人经验的总结,如果有错误恳请大家指出,有更好的建议也欢迎大家一起讨论,让我们在分享中更好地学习。
大家可以关注我的公众号,了解更实时的C++学习心得

回复

使用道具 举报

0

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 前天 23:58 | 显示全部楼层
报告!别开枪,我就是路过来看看的。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表