C++ 的简单历史
2011-10-26 13:57
169 查看
语言的发展是一个逐步递进的过程,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++设计模式之 简单工厂模式讲解(历史上最简单明白的例子)
- C++ 中库函数bsearch的简单研究(含示例)
- 简单举例说明C++中break和continue语句的用法
- [转]C++中cin、cin.get()、cin.getline()、getline()函数的简单总结
- C++中实现trim的简单方法
- (转载自老骆驼)C++中的vector简单使用范例
- C++多线程编程简单实例
- C++简单的文件输入输出
- C++ 17标准正式发布! 更简单地编写和维护代码
- 简单易用的日志c++版本
- <C++>简单的学生成绩管理系统
- C++中time时间函数的一个简单实例
- [简单题]自定义取余(三种解法)C++实现
- VC++下一个看似简单实则很有“内涵”的C/C++字符数组初始化问题
- 历史上最简单Java环境变量配制方法
- C++ 简单 Hash容器的实现
- 历史上出现过的主流C/C++ 编译器都有哪些?
- 简单讲解C++的内部和外部函数以及宏的定义
- 提供一些简单的C++入门程序(提供源代码)