第1课 - 学习C++的意义
1. 对C++的一些误解 ×××
(1)操作系统和驱动都是用C写的,学好C就够了。 (驱动和操作系统开发属于极少部分的人)
(2)C++在应用层用的多,学嵌入式的没必要学。 (嵌入式系统应用程序开发也需要C++)
(3)以后就做驱动开发了,没精力也没必要学习C++了。 (掌握一门编程语言不可能支撑整个职业生涯)
(4)Linus大神都认为C++一无是处,还学它干嘛? (技术盲目崇拜)
2. UNIX操作系统的发展历史
(1)UNIX操作系统诞生之初是直接用汇编语言编写的。
(2)随着UNIX的发展,汇编语言的开发效率成为一个瓶颈。如何提高UNIX系统的开发效率?
(3)1971年,Ken Thompson 和 Dennis Richie 对B语言进行了改良,使其能够直接产生机器码,C语言诞生。
(4)UNIX开始用C语言重写,同时C语言在实践的过程中得到发展。
3. C语言的特点
C语言就是为了编写UNIX操作系统而发明的,并且在实践中得到了发展,C语言有以下两个主要特点。
(1)C语言的目标是高效。
— 最终程序的执行效率很高
(2)C语言是在实践的过程中逐步完善起来的。
— 没有深思熟虑的设计过程
— 残留过多低级语言的特征
4. 软件方法论的发展
- 面向过程程序设计:数据结构 + 算法
— 主要解决科学计算问题,用户需求简单而固定。
— 特点:
-
-
- 分析解决问题所需要的步骤
-
-
-
- 利用函数实现各个步骤
-
-
-
- 依次调用函数解决问题
-
— 问题:
-
-
- 软件可重用性差
-
-
-
- 软件可维护性差
-
- 面向对象程序设计:由现实世界建立软件模型
— 将现实中的事物直接映射到程序中,可直接满足用户需求。
— 特点:
-
-
- 直接分析用户需求中涉及的各个实体
-
-
-
- 在代码中描述现实世界中的实体
-
-
-
- 在代码中关联各个实体协同工作解决问题
-
— 优势:
-
-
- 构建的软件能够适应用户需求的不断变化
-
-
-
- 直接利用面向过程方法的优势而避开其劣势
-
5. C语言的加强
学习C++并不会影响原有的C语言的知识,相反,学习C++可以让我们学到更多的软件设计方法。
(1)当面向过程方法论暴露出越来越多的缺陷时,业界开始考虑在工程项目中引入面向对象的设计方法,而第一个需要解决的问题就是:
高效的面向对象语言,并且能够兼容已经存在的代码。
(2)C语言和C++并不是对立的竞争关系
(3)C++是C语言的加强,是一种更好的C语言
(4)C++是以C语言为基础的,并且完全兼容C语言的特性
6. 学习C++的优势
C++是Java/C#/D等现代开发语言的基础,学习C++后能够快速掌握这些语言。
7. 现代软件的产品架构及特性
— 现代软件产品的架构图
— 现代软件产品的特性
-
- 系统一般是由多种语言写成的
-
- 系统架构的目标是拥抱用户需求的变化
-
- 系统拥有较好的移植性
-
- 系统能够方便的部署和更新
-
- 操作系统的修改和驱动程序的开发在现代软件产品中占据的比重越来越小
— 商场收银系统架构图
8. 学习C++的意义
(1)C++是一种更为强大的C,通过学习C++能够掌握更多的软件设计方法
(2)C++是Java/C#/D等现代开发语言的基础,学习C++后能够快速掌握这些语言
(3)C++是各大知名软件企业挑选人才的标准之一