Bjarne Stroustrup 这哥们在剑桥读博的时候,需要实现一个分布式的操作系统。仔细一想,自己在丹麦读大学的时候就用过 Simula,记得它的「类型表达」、「编译排错」能力以及「类」和「协程」特性还挺好用,于是选择 Simula 语言作为工具。

结果他实现的系统慢得飞起,好急。为了能按时毕业,他只好用 BCPL 重写了那个程序,好气。于是这哥们暗下决心,之后要是没有牛逼的工具,他再也不会去处理这种坑爹的问题。这个工具应该:

  • 具有 Simula 这种对程序组织的支持——某种形式的类分层结构,对并发的某种支持以及基于类的静态检查。
  • 运行得像 BCPL 一样
  • 支持高度可移植实现

毕业之后,牛逼的他来到了牛逼的贝尔实验室。到了公司后,发现有一个需求是要去分析 Unix 内核,然后把它部署在一个局域网上。这时候他面临了两个问题:

  1. 如何分析因为内核分布造成的网络流量
  2. 怎么将内核模块化

于是,相信大家也能猜到,伟大的时刻来临了,C++ 要诞生啦(撒花 (^o^)/~)。于是牛逼的他说『我有一个梦想,我的梦想是有一种语言,它带有 「Simula 类」的「Algol 68」』。但他也说,如果要构造以及实际工具,C 还是稍微比 Algol 68 要屌一些。因为在当时:

  1. C 是灵活的,可以用到当时几乎所有领域
  2. C 是高效的,程序员可以用 C 语言有效地利用硬件资源
  3. C 是可用的,当时已有可用的 C 编译系统和标准库,以及一些相关的工具
  4. C 是可移植的

BS 为了可以像使用 Simula 一样使用 C,让程序员去描述类型。于是采用了 Simula 中的术语 Class 来让 C++ 支持定义类型。

Reference

《C++语言的设计与演化》

05-11 13:28