c++史前时代
1979年,Bjarne Stroustrup,中文名挺拗口的,通常称之为BS,在贝尔实验室开始开发C++语言。为什么要发明新的语言呢?这涉及到作者之前的经历。那时,BS在剑桥读博士学位,研究大型软件的开发。BS用Simula开发了个模拟器,但它的运行速度很慢,BCPL的运行效率是很高,但很低级,开发效率低。因此BS产生发明一个新语言的念头。
下面是BS的一些观点:
*离开剑桥后,我发誓:没有合适工具的情况下绝不去冲击一个问题。
*我的世界观影响c++:bs是实用主义者,硕士是纯数学与应用数学,数学应该是解决问题的工具,对计算机的兴趣也是务实的。长期爱好的历史,喜欢亚里士多德胜过柏拉图。
*c++的许多设计决策源于我对强迫个人按某种特定方式行事的极度厌恶。尊重人群而不尊重个人实际上是什么也不尊重。
*对文学的热爱增强了作者的认识:仅凭理论和逻辑做决策是没有希望的。人的代价总是最高的,不同的人按不同的方式做事,容忍和接受这种情况是我最愿意的事情。
*我喜欢怀疑论者,而不是“真诚的信徒”
*我认为科学家和知识分子的责任是保证他们的思想可以被公众接受,从而对社会有用,而不是为了做出一些专家的玩物。
*人的思维方式是如此丰富多彩,c++被有意设计成支持多种多样的风格。
*一种程序设计语言只是世界中微乎其微的一部分,不要看的太重,重要的是要维持自己的幽默感,c++在众多语言中具有俏皮话和玩笑的语言之一,者并不是偶然。
带类的C
*c++的class是用户自定义类型,为什么我们不直接称他为type呢,选用class的原因是我不想发明新术语,simula的术语都很合适。
*栈上创建对象比堆上创建对象的效率高的多。
*In particular,Steve Johnson and Dennis Ritchie affirmed that C was intended to have name equivalence rather than structural equivalence.For example:
struct A{intx,y;};
struct B{intx,y;};
defines two incompatible types A and B.
我喜欢名字等价胜过结构等价,因为我觉得这是最安全和最清晰的模型
*为什么c++的this是指针而不是引用,为什么是this而不是self?因为那时c++还没有引用机制,c++是从simula而不是smalltalk那里借用的术语。
*我一直这样的观点:人们过分关注语法问题而损害了类型问题。