如果我的目标是那里,我不会从这里起步
编程语言有一个特性,称为正交性(orthogonaliy)。它是指不同的特性遵循同一个基本原则的程序(也就是学会一种特性有助于学习其他的特性)令人不快的是,C++中的许多特性是非正交性的。精通C++的某个特性并不能给你带来什么线索或向你启发适用于其他特性的思想模型。大多数程序员选择了只使用C++中较简单的一个子集的方法
C++中的一个简单子集
尽量使用C++特性
*类
*构造函数和析构函数,但只限于函数体非常简单的例子;
*重载,包括操作符重载和I/O;
*单重继承和多态。
避免使用的C++特性:
*模板
*异常
*虚基类(virtual base class);
*多重继承
编程语言的主要目标是提供一个框架,用计算机能够处理的方式表达问题的解决方法。编程语言越是能体现这个原则,就越成功。
Fortran语言是第一个高级语言,它提供了强大的方法来表达数学公式(Fortran这个名字的意思是“Fortran translation”[公式翻译])。
决定语言中的哪些部分可以构成“建构块”是语言设计中最重要的部分。
C++语言的成功程度取决于它的特性是否是良好的“建构块”,能够解决有趣的问题,也取决于语言能否被正常的程序员可靠地使用。
复用是软件科学的一个崇高而又朦胧的目标。继承看上去并不能完全解决复用的问题。
单一语言机器的市场总是不如通用语言的机器。
有一小部分特殊目的的实用程序能够被共享:数学函数库、一些数据结构程序以及排序和查找库函数。就是它们了。
C++在软件的复用性方面或许可以比以前的语言取得更大的成功。因为C++继承的风格基于对象,既允许数据的继承,也允许代码的继承。