简述
I have yet to see a program that can be written better in C than in C++.
—— Bjarne Stroustrup, founder of C++.
为何 仍然如此重要
程序开发中存在一些权衡:
- 运行效率
开发效率; - 易用性
安全性;
因此,
- 你不用的就不用为此付出代价;
- 你用的就不可能自己手写出更好的。
更详细地,
- 不限制程序员的风格;
- 注重分划(
); - 充分相信程序员,交由程序员全权控制;
- 在编译时加强安全检查;
- 问题驱动:
是由解决现实中的问题来驱动的; - 简单、高效(
)、稳定; - 不专家化:并不只满足专家的需求;
- 不模仿、不迷信理论、不轻易变革(即:不随波逐流)。
和 的关系
- 超集关系
- 编程技巧相同
- 时空开销相同
程序设计
编程是科学和艺术的结合。
程序设计范式一般有两类:
- 面向步骤:基于步骤和调用的概念。偏向图灵机的思想。
- 面向对象:引入概念和模型来刻画现实中人与世界交互的现象。特点是封装和继承。
- 函数式:由微小且有用的函数聚集起来,合成最终的结果。
- 逻辑式:根据公理和推导规则进行推理,回应用户的询问。
- 并发编程:使程序可以分发到独立的个体上运行。如多线程和并发计算等。
- 泛型编程:将常用的数据结构和算法进行抽象,设计出效率高、可重用的库。
一般来说,一种程序设计语言可能包含多种程序设计范式。
面向对象程序设计的历史
:面向对象的开山之作,引入了“类”和“对象”的概念,,但性能太差,不适合实际使用。 :将“万物皆对象”的理念推向极致,将数据和功能均封装在对象内,所有操作都是对象间的消息传递。 :继承了 的类、继承、多态等特性,同时保持了 语言的效率和灵活性。 :通过 虚拟机( )实现了跨平台的应用开发,并推动了规范化的面向对象程序设计。
的家谱图
的诞生
这一部分考试中不会涉及。
年(史前):研究分布式系统的系统软件组织。实现有 ,可读性与层次性强但性能较差; ,调试和 debug 困难; ,兼容 ,且由于使用了 的链接器,效率大大提高。 年: 诞生。当时的硬件和 运行环境以及产业界和大学的用户资源影响了语言设计的因素。 和 :抽象类、多重继承、异常和模板加入。 : 的第一个 标准。 :持续进化,更多库的加入,更多常用操作提供语法支持。
的语言特性
- 静态、强类型
- 泛型编程
- 异常处理