本文仅是笔者个人对 C/C++ 的认识和梳理,由于本人能力有限,文中可能存在许多纰漏欢迎批评指正;同时本文仅代表个人观点,不同意文中观点的同学欢迎讨论,但也希望以更加包容的心态看待他人观点,感谢阅读!!!
要不要学 C++
C++ 的辉煌过去
1979 年 C++ 诞生在著名的贝尔实验室,它进一步扩充和完善了 C 语言。在与 C 语言完全兼容的基础上,C++ 增加了面向对象的类、基本继承、内联、默认函数参数等功能,还增加了用于组织代码和管理复杂性的静态类型检查,同时具备很好的跨平台移植性和高性能。总的来说,C++ 是一种集面向过程、面向对象、函数式、泛型和元编程等多种编程范式于一身的复杂编程语言。
早期计算机行业和硬件密不可分,整个编程界几乎被 C/C++ 占据。C++既有面向对象的优势,又有与C语言匹敌的执行效率,因此在很多高性能的系统级软件、图形图像软件、桌面应用中都有它的身影。在 PC 鼎盛的时期,C/C++ 在桌面级别的软件开发几乎是统治地位。
C++ 在互联网时代的黯淡
1989年12月,Tim Berners-Lee 为他的发明正式定名为 World Wide Web 即万维网,由此计算机行业进入了互联网的Web时代。互联网开发中的要求快速迭代和高灵活性,放大了 C++ 的弊端:开发效率低、易犯错、维护难度大。正如 Linux 之父 Linus 曾说过:“C++是一门很恐怖的语言,而比它更恐怖的是很多不合格的程序员在使用着它”。
C++ 的高度复杂性让 Java 这样具有高质量的统一类库的编程语言在互联网时代中占得先机。随着各种互联网应用的兴起,各类新兴编程语言大放异彩,而 C/C++ 则显得黯淡了许多。
还要不要学 C++?
随着互联网和移动互联网的旺盛发展,Java、Javascript 和 Python 的需求不断增加,而需求 C++ 的岗位确实少了许多。
另外,使用那些更加友好的编程语言可以快速构建起看得见摸得着的大项目,而使用 C++ 构建大型项目所需的学习周期是难以想象的,这也增添了学习 C++ 的煎熬与痛苦。
那我们还要学习 C++ 吗? 我觉得如果只是一时兴起,没有做好长期沉积的心理准备,是不建议学 C++ 的。这里并不是凡尔赛,只是如果不是强制要求或者自身兴趣,无法真正沉下心来学习 C++ 这个过程是十分痛苦的,虽然基础语法很容易学,但是深入的学习过程就会十分漫长且乏味,甚至可以说是一种折磨与煎熬。所以这个过程需要外部或内在动力驱动自己去学习,否则就是在浪费宝贵的学习精力和时间。
学 C++ 有哪些益处?
首先,因为 C++ 包罗万象,所以如果你理解了 C++ 的各种机制,例如内存管理、泛型编程、设计模式等等。这将对你快速学习和理解其他高级编程语言的编程范式有极大的帮助。
C++ 相较于其他高级编程语言最大的特点就是其执行效率了。如果你对操作系统和上层应用之间的基础设施建设,以及高性能应用场景有浓厚兴趣,学习 C++ 对你也有极大帮助。
当然,在未来 C++ 也有着再次辉煌的机遇。我们将迎来 VR/AR、大型游戏、智能制造、物联网等领域高速发展的时代,C++ 语言凭借着强大的设计能力和稳定的运行性能,在这些领域拥有了不可替代的优势。如果你的个人职业规划中有这些领域,学习 C++ 也大有裨益。
本节最后
编程语言之间没有高低,只是他们的关注点有所不同。学习编程语言的真谛还是要理解并把握其自身特点及其实现这种特点的本质模式。能够真正把握一种编程语言,已经十分难能可贵。如果能做到熟练把握两种层次不同,思维不同的语言,那将对开阔你的编程视野极具意义。
不过“百招会不如一招精”,做什么工作都要有自己的过人之处,将自己的宝贵精力放在扬长避短打造自身的核心竞争力,才不会在行业浪潮中被淘汰。
C/C++ 初阶学习笔记
说了一大堆废话,最后只有付出行动才能够成长,坚持学习、不断学习、终有一日你我都会是真正的大佬!
下面是我的学习笔记,希望对你学习 C/C++ 基础知识有帮助,主要包含一下内容:
C 语言:主要记录了C语言中的数据类型、指针与字符串、结构体和文件操作,以及程序结构,帮助已经了解过C语言基础语法的同学进一步突出重点,融汇贯通。
C++ 基础:在本篇中并没有细致的基础语法,而主要记录了 C 语言与 C++的区别,以及 C++ 中的一个重要新增数据类型 String 类。
C++ 面向对象:主要记录了C++的三个特性:封装、继承和多态,回顾了类与对象的基础,并深挖其中的核心思想与机制。
C++ 标准模板库:STL 我个人觉得是使用C++一个比较基础的内容,主要记录了 STL 中的容器、迭代器与算法,终点记录了最为常用且需要记忆的容器,算法则需要在平常使用中熟能生巧。
C++ 其他相关:主要介绍了当下被成熟使用的 C++ 11 新标准的新特性,更加高效地使用C++,同时也记录了C++的文件操作。
第一部分 简明 C 语言
01 数据类型
02 指针与字符串
03 结构类型
04 程序结构
05 文件操作
第二部分 C++ 基础
01 从 C 到 C++
02 C++ string类
第三部分 C++ 面向对象
01 C++ 类和对象基础
02 C++ 构造函数与析构函数
03 C++ 类和对象提高
04 C++ 运算符重载
05 C++ 继承
06 C++ 多态
第四部分 C++ 标准模板库
01 C++ 泛型编程
02 C++ 标准模板库 STL 概述
03 C++ 标准模板库 STL 顺序容器
04 C++ 标准模板库 STL 函数对象
05 C++ 标准模板库 STL 关联容器
06 C++ 标准模板库 STL 容器适配器
第五部分 C++ 其他相关
01 C++ 输入输出流
02 C++11 常用新特性汇总
C/C++ 初阶学习资料
视频资源
侯捷 - 《C++ 面向对象高级编程》
侯捷 - 《C++ STL 体系结构与内核分析》
北大郭炜老师 - 《程序设计与算法(三)C++ 面向对象程序设计》
教程博文
C++ 那些事
Google C++ 风格指南
菜鸟教程 - C++ 教程
基础书籍
《C++ Primer》C++ 基础语法工具书
参考资料
程序设计与算法(三)C++面向对象程序设计
C++ 20发布后,这个老牌编程语言又“真香”了
C++还能重新辉煌吗?C++复杂性的思考
更多推荐
入门,指南,初阶
发布评论