《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++

时间:2022-04-02 20:09:49

http://www.howzhi.com/course/3687/lesson/43412
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继承了类的概念;从Algol68继承了操作符重载、引用以及在任何地方声明变量的能力;从BCPL获得了“//”注释;从Ada得到了模板、名字空间;从Ada、Clu和ML取来了异常处理等。通过这一系列动作,C++具备了多种程序设计语言的优秀基因,既系出名门,又博采众家之长,从而完成了从C到C++的进化。

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

很多朋友都是从C语言转入到C++语言的学习的,你们拥有了C语言的基础,同时又因为C语言和C++语言之间天然的血缘关系,这使得你们可以对C++语言轻松上手,以前的关于C语言的知识和编程经验在C++语言中也继续有效。但是,C语言和C++语言毕竟是两门不同的编程语言,它们虽然有一定的血缘关系,但是两者之间还是有本质的不同,这就是C++比C多出来的两个“+”号。如果说其中一个“+”号代表了C++的面向对象思想的类机制,那么另外一个“+”号则代表了C++的标准模板库,正是这两个“+”号将两者区分开来。所以,作为一个有C语言经验的程序员来学习C++语言,既需要复用自己以前的关于C语言的知识和经验,同时也应该更新观念,将学习和理解的重点放在面向对象思想的类机制和标准模板库这两个方面,这样才能学习到C++语言的精髓。

知道更多: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已经准备完成,正在等待最后的通过并公布。

6 个解决方案

#1


这是什么意思

#2


这是打广告吗  《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++

#3


原来是广告~
《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++

#4


该回复于2013-05-29 09:05:55被管理员删除

#5


记不得哪位C++大牛在哪本学习C++的书的前言里面说过
“用C语言1000行源码能完成的工作千万不要用C++重写!”

#6


《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++

#1


这是什么意思

#2


这是打广告吗  《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++

#3


原来是广告~
《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++

#4


该回复于2013-05-29 09:05:55被管理员删除

#5


记不得哪位C++大牛在哪本学习C++的书的前言里面说过
“用C语言1000行源码能完成的工作千万不要用C++重写!”

#6


《哦,C++原来是这么回事儿》L31.2 C++的前世今生——1.2.2 从C到C++