C++软件开发必备书单:高效学习指南

发表时间: 2021-01-01 13:59

微信搜「 后端技术学堂 」程序员学习课堂,回复「1024」获取 50 本计算机编程学习电子书,回复「路线」获取最全面技术学习路线思维导图

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

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

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

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

  • 计算机基础
  • C++基础
  • C++进阶
  • 更多技术

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

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

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

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

计算机基础

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



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

浙江大学 上海交通大学 复旦大学 中国科学技术大学 中山大学 同济大学 华南理工大学 华东师范大学 武汉大学 南开大学...

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

  • 计算机组成原理

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

  • 计算机网络

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

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

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


C++学习建议

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

下面就来总结下C++的学习路线,不过在看书之前,特别是初学者,我建议课本+视频的方式学习。

C++本身是比较难的高级程序语言,这里推荐一个ACM亚洲区冠军编写的免费C++视频课,手把手教,可以点开看看,合适的话体验一下,反正免费~

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

C++基础

C++和C语法基础

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

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

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

推荐书:

  • 《C++ Primer 》豆瓣9.4

入门无脑推荐C++ Primer,是C++入门必看的经典书籍,这本书我看了不下 3 遍,每个阶段重看都有不一样的收获,平常也可用作工具书放在手头翻阅。本书是久负盛名的C++经典教程,本书是C++大师Stanley B. Lippman丰富的实践经验和 C++ 标准委员会原负责人Josée Lajoie 对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++,书中对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南。

  • 《Effective C++》豆瓣9.5

这本书我最初在网上找的 PDF 看,看完非常过瘾,最后买了正版图书收藏和翻阅。和一般书的组织形式有点不同,全书用条款的形式呈现,作者用风趣的行文风格,阐述了改善 C++ 程序与设计的 55 个具体做法,有人说C++程序员可以分为两类,读过Effective C++的和没读过的,我不能同意更多!强烈建议大家都应该去读一遍,非常值得一看,这本书能让你少走弯路,提前知道C++的坑,以后编码之路更加顺畅。

  • 《More Effective C++》 豆瓣9.2

看完上面那本之后可以趁热来看这本,35个改善编程与设计的有效方法,这本书和上一本 Effect C++ 是同一个作者,Scott Meyers,世界顶级的C++软件开发技术权威之一,这次的条款虽然只有 35 条,变得比较少,页数倒是多了一些,原因是这次选更高阶,Effective 多从反面阐述使用 C++ 时应注意的陷阱、误区和戒律 ,而 More 着重从正面建设性地告诉你如何优雅地建立 C++ 构造单元。

C++进阶

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

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

推荐书

  • 《STL源码剖析》 豆瓣 8.7

如果说《Effective C++》让我第一次感受到C++的博大精深,那么这本书则带我走入C++的大门。这本书所呈现的源码,使读者看到vector的实现、list的实现、heap的实现、deque的实现、Red Black tree的实现、hash table的实现、set/map的实现;看到各种算法(排序、查找、排列组合、数据移动与复制技术)的实现;甚至还能够看到底层的memory pool和高阶抽象的traits机制的实现。

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

这本书的是比较深入的 C++ 内容,相信我,看完这本书能回答大部分 C++ 面试官的刁钻问题。讲解了 C++ 的对象模型和内存布局,第一代 C++ 编译器开发主管所写,如果你想成为真正的 C++ 高手,看这本书,他为你讲述了编译器在处理各种语法时在「后台」所做的事。对C++有较深入了解的读者会在读后有恍然大悟之感,中文版由候捷翻译,质量相当不错。

  • 《C++编程思想》

总共有 2 卷,Thinking 系列第一卷绝对是一本好书,它给你解释了怎么从 C 到 C++ 的转变, 接着慢慢的给你介绍 C++ 的各种东西,先从数据抽象入手、再到类、再到各种特性,,如访问保护、命名空间、重载操作符、继承、多态、模板(初级介绍)等等以及为什么要这样。第 2 卷介绍了 C++ 实用的编程技术和最佳的实践方法,深入探究了异常处理方法和异常安全设计;介绍C++的字符串、输入输出流的现代用法;解释多重继承问题的难点,描述了典型的设计模式及其实现,特别介绍了多线程处理编程技术。

现代C++

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

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

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



本书号称『高速上手』,从内容上对二十一世纪二十年代之前产生 C++ 的相关特性做了非常相对全面的介绍,读者可以自行根据下面的目录选取感兴趣的内容进行学习,快速熟悉需要了解的内容。这些特性并不需要全部掌握,只需针对自己的使用需求和特定的应用场景,学习、查阅最适合自己的新特性即可。

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

链接:https://pan.baidu.com/s/1EkjLgVCeXwxIwDaACY82vQ

提取码:vnu0

C++就业方向

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

  • 客户端开发
  • 音视频处理
  • 游戏开发
  • web后端服务开发
  • 嵌入式开发

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

更多技术

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

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

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

  • Linux
  • 数据库
  • 设计模式
  • 中间件
  • 分布式
  • 高并发
  • 高可用
  • 高性能(统称互联网三高)
  • 搜索引擎
  • 测试技术
  • 监控运营
  • 虚拟化
  • 安全技术
  • 大数据

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

后端都要学习什么?www.zhihu.com

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

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


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


Hi,我是@程序员柠檬橙关注我,学习更多编程知识!

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

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

点击下方「了解更多」下载学习资源