zl程序教程

您现在的位置是:首页 >  后端

当前栏目

如何系统地学习 C++ 语言?(2021年4月更新)

C++学习语言 如何 更新 2021
2023-09-11 14:13:58 时间

GitHub,永远滴神!

一、C++ 快速入门指南

首先分享一个最近在 GitHub 特火的一个 C++ 项目:C++ 快速入门指南。

地址:github.com/Light-City/C

这是一个适合初学者从入门到进阶的仓库。

这个开源项目的作者是一名研一才接触 C++ 的同学,目前已经拿到了鹅厂后台开发的 offer。

一开始他只是在 GitHub 上建立「C++ 那些事」只是作为自己的学习笔记。但没想到,两年内,这个项目受到越来越多人的追捧,并在本月初登上了热榜,于是他对整个项目的结构做了梳理规划,细分出了「基础」、「进阶」、「实战」板块,并将所有代码开源供大家学习,此外还专门为这个项目做了网站。

地址:light-city.club/sc/

v2-bb36c474172cd71d781485834386075b_b.jpg

它可以帮助初学者了解如何入门 C++,也可以帮助面试者如何深入 C++。

整个项目包括从入门到就业的全部环节,称得上是保姆式的编程指南。

我觉得这个项目是最符合题主要求的一个项目了。

二、写个小白的 C++ 学习路线!

参考来源: mp.weixin.qq.com/s/bzE9
作者:CodeSheep

写个小白的 C++ 学习路线!

v2-b1470b7b325048c6bf9248b0a9c15239_b.jpg

1、C++ 的工作岗位有哪些?

C++主要还是做后台(服务端)开发比较多,包括:

  • 通信公司后台开发
  • 互联网公司后台开发
  • 游戏公司后台开发
  • ……

当然这个后台开发具体职责又有很多细分,比如:

  • 有做数据处理和分析的
  • 有做基础协议和通信的
  • 有做服务端底层应用优化的
  • 甚至还有做后台系统驱动和内核的
  • ……

不管怎样,下面即将要介绍的这些学习路线和内容适用于以上所有情况。

2、C++ 的学习书籍推荐?

  • C++和C语言确实是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用扩展工程化,这是大型项目的必备要素
  • 除了C语言所有的底子之外,还需要学习C++的面向对象(封装、继承与多态)特性、泛型、模板、STL等等
推荐书籍(有先后顺序):《C++ Primer》、《Effective C++》、《C++ 标准程序库》、《STL源码剖析》《深度探索C++对象模型》

补充一个小建议:语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,高强度给它压下来,否则容易把自己拖泄气。

3、编程基础“四大件”

基础四大件包括:数据结构和算法计算机网络操作系统设计模式

这跟学什么编程语言、后续从事什么编程方向均无关,只要做编程开发,这四个计算机基础就无法避开。可以这么说,这基础四大件真的比编程语言重要!!!

具体介绍可以看我之前写的一篇回答。

计算机基础知识对程序员来说有多重要?

4、应用实践编程

这部分会涉及到一些工具、编程环境、和具体编程实践,应该说这一部分学完,自己应该能做点东西出来、或者说能看懂一些实际项目的代码。

实践这部分,我也是结合我之前在通信公司的实际工作经历和所听所见,来聊一聊。

1、Linux操作系统的使用

很多人初学C语言、C++(包括我)都是在Windows环境上进行的,而实际企业级开发几乎不可能,所以Linux系统必须要会,我们别无选择。先谈使用。

包括:常见的Linux操作命令基本的Shell编程

推荐书籍:《鸟哥的Linux私房菜》

2、编译/调试工具

首先是跟编译相关的:编译工具!

我们知道很多人学C语言、C++都在类似Visual Studio这种集成IDE里进行代码编译,这个其实也用了编译器,只不过是微软自家的MS编译器,而且所有操作均可视化。而企业里开发很少会基于Windows系统,所以Linux平台上的编译器更为重要,最典型的当属 GCC,甚至有些公司有自己定制过的交叉编译工具,但没关系,只要 GCC熟悉,其他问题都不大。

其次,大家自学C语言、C++,都借助类似VS这种IDE,点按钮即可对源文件编译。而企业里实际项目的编译动作叫 make,编译的实际动作和过程都是写在 makefile文件里,所以makefile的书写规则建议学习!

最后说到调试工具,Linux平台上的 GDB调试工具要熟练使用,会借助于它进行调试。

推荐资料: 这部分没有书可推荐,英文好的同学可以直接看 GNU官网关于 GCC和 GDB的文档,中文材料可以看:《debuging with gdb》(中文版)和陈皓先生的《跟我一起写makefile》

3、Linux环境编程

还是那句话,企业里C语言和C++几乎都是基于Linux平台的,这一部分我们没办法避开

(1)Linux系统编程

众所周知,Windows系统编程里有各种各样的Windows API,同理Linux系统API的使用就更加重要。

(2)多线程编程

此处指的是多线程编程实践相关的东西,一般包括:线程、资源、信号、同步、互斥、锁等等一些具体的编程方法。

(3)网络编程

此处的网络编程主要指的是具体Linux系统上的网络编程 API和 IO函数的编程实践。

推荐书籍:这三部分综合在一起,推荐必看书籍包括《Unix环境高级编程》、《Linux高性能服务器编程》、《POSIX多线程程序设计》

三、书籍推荐


下载链接:链接: pan.baidu.com/s/1MrfDkP 密码: ufh5


手册类:

  1. 《C++程序设计语言(The C++ Programming Language)》
  2. 《C++标准程序库(C++ Standard Library Tutorial and Reference) 》
  3. 《The C++ IO Streams and Locales》
  4. 《The C++ Standard (INCITS/ISO/IEC 14882-2011)》
  5. 《Overview of the New C++ (C++11/14) 》
  6. 《The Standard C Library》

初级:

  1. 《C++ Primer》
  2. 《Accelerated C++》
  3. 《C++编程思想(Thinking in C++) 》
  4. 《C++程序设计原理与实践 (Programming: Principles and Practice Using C++ )》
  5. 《C++初学者指南》
  6. 《C++ Primer Plus》
  7. 《Visual.C++.2008入门经典》
  8. 《面向对象程序设计—C++语言描述》
  9. 《数据结构(C++语言版)第三版_邓俊辉》

实用:

  1. 《Effective C++ 》
  2. 《Effective STL》
  3. 《深入浅出设计模式》
  4. 《设计模式:可复用面向对象软件的基础》
  5. 《HeadFirst设计模式》
  6. 《大话设计模式》

中级:

  1. 《More Effective C++ 》
  2. 《Exceptional C++ 》
  3. 《More Exceptional C++》
  4. 《Exceptional C++ Style》
  5. 《C++编程规范(C++ Coding Standards) 》
  6. 《C++ 模板完全指南(C++ Templates: The Complete Guide)》
  7. 《Beyond the C++ Standard Library(Boost)》
  8. 《C和C++安全编码》
  9. 《深入理解C++11》

高级:

  1. 《C++设计新思维-泛型编程与设计模式之应用(Modern C++ Design ) 》
  2. 《C++模板元编程(C++ Template Metaprogramming)》
  3. 《C++ Concurrency In Action》
  4. 《Advanced c++ Programming Styles and Idioms 》
  5. 《Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming》
  6. 《Advanced_Metaprogramming_in_Classic_C 》

经典古老:

  1. 《C++的设计与演化(The Design and Evolution of C++ )》
  2. 《C++沉思录(Ruminations on C++) 》
  3. 《大规模C++程序设计(Large Scale C++ Software Design)》
  4. 《深度探索C++对象模型 (Inside the C++ Object Model )》

计算机网路:

  1. 《TCP/IP卷一》
  2. 《计算机网络:自顶向下》
  3. 《图解HTTP和图解TCP/IP》
  4. 《计算机网络》

操作系统:

  1. 《深入理解计算机系统》
  2. 《现代操作系统》
  3. 《Linux内核设计与实现》
  4. 《Unix网络编程》

数据结构与算法:

  1. 《算法导论》
  2. 《数据结构与算法(Java版)》
  3. 《算法图解》《啊哈算法》
  4. 《剑指offer》
  5. LeetCode教科书式刷题网站

数据库:

  1. 《数据库原理》
  2. 《SQL必知必会》
  3. 《深入浅出MySQL》
  4. 《MySQL技术内幕:innodb存储引擎》
  5. 《高性能Mysql》
  6. 《Redis实战》
  7. 《Redis设计与实现》

分布式:

  1. 《分布式应用》
  2. 《大型网站技术架构》
  3. 《大型分布式网站架构设计与实践》
  4. 《分布式服务框架原理与实践》
  5. 《大型网站系统与Java中间件开发实践》
  6. 《从Paxos到Zookeeper分布式一致性原理与实践》
  7. 《大规模分布式存储系统》

云计算:

  1. 《OpenStack设计与实现》
  2. 《docker入门与实践》
  3. 《Kubenetes权威指南》

大数据:

  1. 《大数据技术原理与应用》
  2. 《Hadoop实战》
  3. 《Hadoop权威指南》