《我的第一本C++书》试读:1.2.2 从C到C++

1.2.2  从C到C++

语言的发展是一个逐步递进的过程。1979年4月,同样来自贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士与同事接受一项工作,尝试分析UNIX的内核。当时没有合适的工具能够有效地分析内核分布形成的网络流量,将内核模块化,所以斯特劳斯特卢普博士的工作进展很慢。同年10月,斯特劳斯特卢普博士设计了一个可以运行的预处理程序,称之为"Cpre",它为C语言加上了类似Simula语言的类机制。在这个过程中,斯特劳斯特卢普博士产生了创建一门新语言的想法。贝尔实验室对这个想法很感兴趣,就让斯特劳斯特卢普博士等人组成一个开发小组,专门进行研究。

当时这门新语言不是叫C++,而是叫C with class,它只是C语言的有效扩充,后来才更名为C++。当时C语言已经在所有程序设计语言中居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言。C++当时面临两个挑战:第一,C++要在运行时间、代码紧凑性和数据紧凑性方面与C语言相媲美;第二,C++要尽量避免在语言应用领域的限制。在这种情况下,最简单的方法是继承C语言的一些特性,让C++语言具备C语言的各种优点。斯特劳斯特卢普博士为了突破C语言的种种局限,借鉴了其他程序设计语言的优点,实践了编程界由来已久的"拿来主义"。例如:C++从Simula继承了类的概念;从Algo l68继承了运算符重载、引用以及在任何地方声明变量的能力;从BCPL获得了"//"注释;从Ada得到了模板、名字空间;从Ada、Clu和ML取来了异常处理等。通过这一系列动作,C++具备了多种程序设计语言的优秀基因,既系出名门,又博采众家之长,从而完成了从C到C++的进化。

其后,C++又经历了长期的发展,随着标准模板库(Standard Template Library,STL)的出现、泛型编程的发展,C++在2000年左右出现了发展史上的一个高峰,成为程序设计语言中的无冕之王。

知道更多:C++大事记

1983年8月,C++首次投入使用,开天辟地。

1983年12月,Rick Mascitti建议将C with class更名为CPlusPlus,亦即C++。C++从此名正言顺。同年,C++吸收了很多新的特性,其中包括虚函数、函数名、操作符重载、常数、用户可控制的自由空间储存区、改良的类型检查及新的双斜线"//"单行注释风格。

1985年2月,C++ Release 1.0发布。

1985年10月,斯特劳斯特卢普博士完成了经典巨著《The C++ Programming Language》的第一版。

1989年,C++ Release 2.0发布。它引入了多重继承、抽象类、静态成员函数、常数成员函数及成员保护等新特性。C++中面向对象的思想更加成熟。

1990年3月,第一次ANSI X3J16技术会议在新泽西州召开。

1990年7月,C++加入模板。

1990年11月,C++加入异常处理。

1991年6月,《The C++ Programming Language》第二版完成。

1991年6月,第一次ISO WG21会议在瑞典召开。

1993年3月,在俄勒冈州加入运行时类型识别。

1993年7月,在德国慕尼黑加入名字空间。

1994年8月,ANSI/ISO委员会草案登记。

1997年7月,《The C++ Programming Language》第三版完成。

1998年10月,ISO标准通过表决被接受。

1998年11月,ISO标准得到批准。同年,C++0x公开,它是目前计划中的C++编程语言的新标准,将取代现行的C++标准ISO/IEC 14882。

2003年,在官方公布1998标准的5年之后,C++标准委员会处理缺陷报告,并于2003年发布了一个C++标准的修正版本,称为C++03。新的标准包含了核心语言的新功能,同时扩展了C++标准程序库,合并了大部分的C++ Technical Report 1程序库。

2005年,公布一份名为Library Technical Report 1(简称TR1)的技术报告。虽然它不属于官方标准,但它所提出的几个扩展建议有望成为新C++标准的一部分。目前,几乎所有流行的C++编译器都已经支持TR1。

2008年10月,C++0x的最新报告N2800公开。

到今天为止,C++的最新标准C++0x已经准备完成,正在等待最后的通过并公布。

posted @ 2011-06-05 11:01  陈良乔  阅读(376)  评论(1编辑  收藏  举报