最初导致 C++ 诞生的原因是在 Bjarne 博士等人试图去分析 UNIX 的内核的时候,这项工作开始于 1979 年 4 月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样将内核模块化。
同年 10 月,Bjarne 博士完成了一个可以运行的预处理程序,称之为 Cpre,它为 C 语言 加上了类似 Simula 的类机制。在这个过程中,Bjarne 博士开始思考是不是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让 Bjarne 博士等人组成一个开发小组,专门进行研究。
当时不是叫做 C++,而是 C with class,这是把它当作一种 C 语言的有效扩充。由于当时 C 语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是 C 语言,所以当时有两个问题最受关注:C++ 要在运行时间、代码紧凑性和数据紧凑性方面能够与 C 语言相媲美,但是还要尽量避免在语言应用领域的限制。
在这种情况下,一个很自然的想法就是让 C++ 从 C 语言继承过来,但是我们的 Bjarne 博士更具有先见之明,他为了避免受到 C 语言的局限性,参考了很多的语言,例如:从 Simula 继承了类的概念,从 Algol68 继承了运算符重载、引用以及在任何地方声明变量的能力,从 BCPL 获得了注释,从 Ada 得到了模板、名字空间,从 Ada、Clu 和 ML 取来了异常。
时间 | 事件 |
---|---|
1983 年 8 月 | 第一个 C++ 实现投入使用(所以我喜欢说 1983 年 C++ 开了天界) |
1983 年 12 月 | Rick Mascitti 建议命名为 CPlusPlus,即 C++ |
1985 年 2 月 | 第一个 C++ Release E 发布 |
1985 年 10 月 | CFront 的第一个商业发布,CFront Release 1.0 |
1985 年 10 月 | Bjarne 博士完成了经典巨著 The C++ Programming Language 第一版 |
1986 年 11 月 | C++ 第一个商业移植 CFront 1.1,Glockenspiel |
1987 年 2 月 | CFront Release 1.2 发布 |
1987 年 11 月 | 第一个 USENIX C++ 会议在新墨西哥州举行 |
1988 年 10 月 | 第一次 USENIX C++ 实现者工作会议在科罗拉多州举行 |
1989 年 12 月 | ANSI X3J16 在华盛顿组织会议 |
1990 年 3 月 | 第一次 ANSI X3J16 技术会议在新泽西州召开 |
1990 年 5 月 | C++ 的又一个传世经典 ARM 诞生 |
1990 年 7 月 | 模板被加入 |
1990 年 11 月 | 异常被加入 |
1991 年 6 月 | The C++ Programming Language第二版完成 |
1991 年 6 月 | 第一次ISO WG21会议在瑞典召开 |
1991 年 10 月 | CFront Release 3.0发布 |
1993 年 3 月 | 运行时类型识别在俄勒冈州被加入 |
1993 年 7 月 | 名字空间在德国慕尼黑被加入 |
1994 年 8 月 | ANSI/ISO 委员会草案登记 |
1997 年 7 月 | The C++ Programming Language 第三版完成 |
1997 年 10 月 | ISO 标准通过表决被接受 |
1998 年 11 月 | ISO 标准被批准 |
时间 | 事件 |
---|---|
1985 年 10 月 | Cfront Release 1.0 发布 |
1987 年 12 月 | GNU C++ 发布 |
1988 年 1 月 | 第一个 Oregon Software C++ 发布 |
1988 年 6 月 | 第一个 Zortech C++ 发布 |
1990 年 5 月 | 第一个 Borland C++ 发布 |
1992 年 2 月 | 第一个 Dev C++ 发布 |
1992 年 3 月 | 第一个 Microsoft C++ 发布 |
1992 年 5 月 | 第一个 IBM C++ 发布 |