语言的发展是一个逐步地进的过程,c++是直接从c语言发展过来的,而c语言是从b语言发展过来的,b语言是bcpl的一个解释性后代,bcpl是basic cpl。其中最有趣的是cpl中c的由来,由于当时这个语言是剑桥大学和伦敦大学合作开发的,在伦敦的人员加入之前,c表示剑桥,伦敦人员加入之后,c表示combined组合。还有一种非正式的说法,c表示christopher,因为christopher是cpl背后的主要动力。
最初导致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取来了异常。
下面让我们来一起看一下c++历史上的主要事件:
1983年8月, 第一个c++实现投入使用(所以我喜欢说1983年c++开了天界)
1983年12月,rick mascitti建议命名为cplusplus,即c++。
1985年2月, 第一个c++ release e发布。
10月,cfront的第一个商业发布,cfront release 1.0。
10月,bjarne博士完成了经典巨著the c++ programming language第一版
1986年11月,c++第一个商业移植cfront 1.1,glockenspiel。
1987年2月, cfront release 1.2发布。
11月,第一个usenix c++会议在新墨西哥州举行。
1988年10月,第一次usenix c++实现者工作会议在科罗拉多州举行。
1989年12月,ansi x3j16在华盛顿组织会议。
1990年3月, 第一次ansi x3j16技术会议在新泽西州召开.
5月, c++的又一个传世经典arm诞生。
7月, 模板被加入。
11月,异常被加入。
1991年6月, the c++ programming language第二版完成。
6月, 第一次iso wg21会议在瑞典召开。
10月,cfront release 3.0发布。
1993年3月, 运行时类型识别在俄勒冈州被加入。
7月, 名字空间在德国慕尼黑被加入。
1994年8月, ansi/iso委员会草案登记。
1997年7月, the c++ programming language第三版完成。
10月,iso标准通过表决被接受
1998年11月,iso标准被批准。
接下来让我们一起看一下c++编译器的“第一个”:
1985年10月,cfront release 1.0发布。
1987年12月,gnu c++发布。
1988年1 月,第一个oregon software c++发布。
6 月,第一个zortech c++发布。
1990年5 月,第一个borland c++发布。
1992年2 月,第一个dec c++发布。
3 月,第一个microsoft c++发布。
5 月,第一个ibm c++发布。
如果你对c++的历史发展很感兴趣,你可以参考the design and evolution of c++。