本文参照自狄泰软件学院:《C++深度剖析》课程
常见的观点:
- 操作系统和驱动程序都是C写的,学好C足够了。
- C++在应用层用得多,学嵌入式没必要学
- Linux大神都认为C++一无是处,还学它干嘛
- 我以后就做驱动开发,没精力也没必要学习C++
但是说,软件这个行业是飞速发展的,只靠单一 一种语言并不能支撑整个工作生涯,而且只用单一 一种语言很快就会走进瓶颈,所以我们要开阔视野,学习多种语言,这样的话,我们的选择就会更多。还可以比较各种语言之间的优劣。全面发展自己的能力。
C与C++的对比
C语言的特点:
1.C语言是实践的过程中逐步完善起来的
没有经过深思熟虑的设计过程。C语言出现为了解决汇编语言中的问题。因此也残留了过多低级语言的特征。
2.C语言的目标是高效
最终程序执行效率的高效,因为是为了取代汇编,因此它的效率很高,但使用麻烦,只在底层编程使用。
3. 面向过程的语言:以一种以过程为中心的编程思想
就是分析出解决问题所需的步骤,然后把函数吧这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
4.问题:软件可重用性差,软件可维护性差。
C++的特点
相对于C语言,C++重要的是面向对象程序设计思想。是一种以事物为中心的编程思想。
就是吧构成问题事物分成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
1. 直接分析用户需求中涉及的各个实体
2. 在代码中描述现实世界中的实体
3. 在代码中关联各个实体协同工作解决问题
构建的软件能够适应用户需求的不断变化
直接利用面向过程方法的优势而避开其劣势
C++是C语言的加强,并且完全兼容C语言的特性,是一种更好的C语言。
两者并不是对立的竞争关系。学习C++并不会影响原有的C语言。反而可以学到更加多的软件设计方法。
问题:为什么要为以后的学习其他语言做准备?
现代软件产品的特性
1. 系统一般是由多种语言写成的
2. 系统架构的目标是拥抱用户需求的变化
3. 系统拥有较好的移植性
4. 系统能够方便的部署和更新
而底层代码,如操作系统的修改和驱动程序的开发在现代软件产品中占据的比重越来越少。
C到C++的升级
C++继承了所有的C特性
C++在C的基础上提供了更多的语法和特性
C++的设计目的是运行效率与开发效率的同一