C++规则和原理

要成为真正有用而且人们乐于使用的东西,一个程序设计语言的设计就必须有一种全局观,用于指导语言中各种特征的设计。对于C++,这种全局观由一组规则和约束构成。称其为规则,是因为我认为把原理这个词用在一个真正的科学原理非常贫乏的领域,显得过于自命不凡,而程序设计语言设计就是这样一个领域。此外,对许多人而言,术语原理隐含着一个不太实际的推论,也就是说,任何例外都是不可接受的。而我的有关C++设计的规则几乎可以保证都有例外情况。实际上,如果一条规则与某个实际试验发生冲突,这个规则就应该靠边站。这样说,看起来似乎有些粗鲁,但是它不过是一条一般性原则的变形:理论必须与试验数据相吻合,否则就应该被更好的理论取代。

这些规则绝不能不加思索地使用,也不能用几条肤浅的口号取代。我把自己作为一个语言设计者的工作看作去决定需要对付的是哪些问题,决定在C++ 的框架里能够对付的是哪些问题,并在实际语言特征设计的各种规则之间保持一种平衡。

这些规则指导着与语言特征有关的各项工作。当然,改进设计的大框架是由C++ 的基本设计目标提出来的。

我把这些规则组织在四个更具概括性的小节里。4.2节包含所有与整个语言有关的规则,这些东西非常具有普遍性,单个的语言特征将无法直接放进这个图景里。4.3节的规则基本上与C++ 在支持设计方面所扮演的角色相关。4.4节的规则关注与语言的形式有关的各种技术细节。4.5节的规则集中关注C++ 作为低级系统程序设计语言所扮演的角色。

C++规则和原理

 

这些规则的形式主要得益于事后的思索,但有关规则及其所表达的观点,在1985年C++的第一个发布之前就已经支配着我的思想了,而且——正如前面章节里讲到的——这些规则中不少还是C with Classes的初始概念的组成部分。