全网最全总结,如何高效学习C++软件开发(详细书单)

最高效的学习C++方式是看书,读书能让你快速进步,不是每个坑都要亲自踩一遍。

本文推荐图书,可在文末提供了下载方式。

先说下自己的情况吧,我是一名C++后台开发软件工程师,大学毕业一开始是用C++做通信软件后台开发,到现在某互联网大厂做C++服务端后台开发工作,学习C++这么多年,积累了一些经验,最近在知乎看收到很多请教C++如何学习的问题邀请,那就来和大家分享下我的C++学习路线。

总结了我的C++的学习路线,主要分为4大模块:

计算机基础

C++基础

C++进阶

更多技术

为什么学C++之前我建议你学计算机基础?

作为一门计算机编程语言,在学C++之前最好有一定的计算机基础。我们都知道程序是运行在计算机之上,C++比较接近底层计算机底层,不像JAVA程序和操作系统之间隔着一个jvm虚拟机,所以学习C++有必要先了解计算机基础,这样你学习过程会顺利很多。

怎么学计算机基础?可以从计算机专业的4门专业课入手。

如果你已经学过计算机基础4门课程,或者是计算机相关专业的同学,可以直接跳到下面的C++学习部分。

计算机基础

计算机科学技术代号CS(ComputerScience)作为一门大学专业,和大学其他专业课一样有自己的核心课程,最好的当然是在学校按着学校的课程培养计划从头到尾学一遍,但不是每个人都是计算机专业的,很多人因为工作需要才来学习计算机,或者是转行上完培训班想再更深入理解计算机,那我觉得大可不必从头走一遍本科的课程,挑核心课程来学习即可。我这有一份中中科大的计算机技术本科主要课程结构安排。

考过CS(ComputerScience)或者软件工程研究生的同学,应该知道专业课代号408的「计算机基础综合」,很多一流院校的计算机或软件学院,都用这门专业课来考察考生的计算机基础水平,这门课曾经被认为是跨考生的噩梦,知识点庞大且复杂,涵盖了一个本科计算机毕业生该会的基础知识,我那年有下面这些985院校用了408来作为初试专业课。

说这么多,就是想说计算机基础非常重要,是软件开发的基本功,计算机基础课程包括:

计算机组成原理

这门课按构成模块来分析计算机组成和工作原理,计算机组成分为下面5大模块:存储系统、指令系统、中央处理器、总线、IO系统。

计算机网络

计算机网络就是围绕着,怎么通过网络把不同计算机连接起来展开说明,不同计算机要能通信需要商量一套大家都认可的语言,这个语言就是「网络协议」,整个计算机网络的学习都是围绕着不同网络分层的协议展开。

计算机操作系统

操作系统也是一种软件。你熟悉的微软Windos操作系统,后台开发熟悉的各种发行版的Linux系统,都是通过软件的形式安装在计算机上。

数据结构与算法

数据结构大家最熟悉,即使毫无计算机基础或是想转行计算机,第一个遇到的就是数据结构,因为面试刷的算法题本质上就是对各种数据结构的运用。所以单纯对面试功利的角度来说,数据结构也是必须要掌握的计算机基础。

C++学习建议

其实,计算机基础和C++学习是可以并行执行的,不一定非要学完计算机基础才开始学习C++,我把计算机排在第一位,是因为计算机基础是所有编程语言学习的基础。

学好C++才是入职大厂的敲门砖!当年要是有这课,我的C++也不至于这样

C++基础C++和C语法基础

语法是一门语言的基础,C++的基础语句和语法和C是很像的,最大的不同在class和异常处理机制,还有模板的应用,所以有C基础语法学起来是很快,没有C基础也没关系,啃完下面推荐的书也差不多,当然光看也是不行的,编程就是一门手艺活,孰能生巧,看完之后趁热把课后习题敲一遍,即使没有思路,对着答案敲一遍代码,比只看不动手强一百倍。

STL提供了丰富的算法库支持和各种容器。C++标准库提供了包括最基础的标准输入输出iostrem、各种容器vector、set、string,熟练掌握标准库,不用重复造轮子(练手学习目的的造轮子除外),能让你写出更C++的代码。

站在巨人的肩膀上写出更健壮高效的代码,你没踩过的坑前人已经踩过一遍,关于一些语言细节和更好的编码习惯,有很多优秀的书籍可以学习。

推荐书:

《C++Primer》豆瓣9.4

《EffectiveC++》豆瓣9.5

《MoreEffectiveC++》豆瓣9.2

C++进阶

书不在多,贵在精。多的我也不推荐,看完上面的这些书,加上动手写了一些习题,你的C++基本上算是入门了。

学无止境,下面这些书推荐你在进阶时候看,能让你更深入的理解C++这门语言。

推荐书

《STL源码剖析》豆瓣8.7

《InsidetheC++ObjectModel》这本书中文版《深度探索C++对象模型》翻译质量也很高,豆瓣9.1

《C++编程思想》

现代C++

C++作为一门相对古老的语言,已经经历这么多年的发展。目前很多岗位都是要求会使用现在C++新特性,是时候学习现代C++新特性了,咱们C++程序员拥抱C++1X甚至C++20新变化。

学完上面推荐的书籍,算是已经有C++基础的同学,如何快速上手现代C++?这里我看的是开源电子书:

《现代C++教程:高速上手C++11/14/17/20》

这本书已在Github开源,离线版本PDF下载地址:

提取码:vnu0

C++就业方向

学完这些还不够,C++能做的东西和方向比较多,你可以用C++来做下面这些事情:

客户端开发

游戏开发

web后端服务开发

嵌入式开发

我本身从事C++后端开发工作,这里就说下C++后端开发,除了学习上面的知识以外,还需要学习哪些技术。

更多技术

其实C++语言学习在C++后端开发中,只占了非常非常小一的部分,要知道语言只是一个工具,你要做开发,工具使用是最低的要求,还需要学习以下内容才能符合岗位要求。

在招聘网站找了一个腾讯的C++研发工程师招聘要求,可以看到除了对C++语言的要求外,对面试者的其他要求也不少。

归纳起来,还要学习以下后端技术:

Linux

数据库

设计模式

中间件

分布式

高并发

高可用

高性能(统称互联网三高)

搜索引擎

测试技术

监控运营

虚拟化

安全技术

大数据

怎么学这些技术?可以看我下面这篇文章,下面是我耗时半个月整理的1万5千字后端开发完全学习指南,对各个知识点的学习已经讲得明明白白,只要你能按着学习路线图坚持下来,问题不大,因为大方向不会错。

后端都要学习什么?

好了,这条C++路线我已经给你讲完,学无止境,C++的学习也是一条漫长的道路。

大家只知道程序员工资高,同样的,选择了程序员这条路也要做好付出更多努力的准备,未来的路很长,我们终身学习,共勉。

方便交流学习,文中提到的书籍也有下载,微信搜「后端技术学堂」回复「1024」即可免费获取。

如果文章对你有帮助,点赞或分享给需要的朋友,这对柠檬很重要,在此先谢过各位大佬了!我是柠檬,我们下期再见。

私信回复「1024」获取编程学习资源,若有帮助,请点赞转发支持~

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系