英文原文:History of C++
C++的历史可以追溯到 1979 年,当时 Bjarne Stroustrup(译者注:C++之父)正在准备他的博士毕业论文,他有机会使用一种叫做 Simula 的语言。顾名思义,Simula 语言的主要作用是仿真。Simula 67是 Simula 语言的一种变种,被公认是首款支持面向对象的语言。Stroustrup 发现面向对象的思想对于软件开发非常有用,但是因 Simula 语言执行效率低,其实用性不强。
不久之后,Stroustrup 开始着手“C with Classes”的研发工作,“C with Classes”表明这种新语言是在C基础上研发的,是C语言的超集。C语言以其高可移植性而广受好评,且程序执行速度以及底层函数的性能不受程序移植的影响,Stroustrup 要做的就是将面向对象的思想引入C语言。新语言的初始版本除了包括C语言的基本特征之外,还具备类、简单继承、内联机制、函数默认参数以及强类型检查等特性。
Bjarne Stroustrup 的第一款“C with classes”编译器叫 Cfront,这个名字源自一个叫做 Cpre 的C编译器。Cfront 的机理是把“C with classes”的代码翻译成原生C代码。颇为有趣的一点是 Cfront 源码大部分是由“C with Classes”编写,这使得 Cfront 成为了一种自足执行的编译器(可以编译自身源码的编译器)。由于很难整合 C++ 的异常机制,Cfront 在 1993 年退出了历史的舞台,但是它对以后 C++ 编译器以及 Unix 操作系统的实现都产生了深远的影响。
1983 年,“C with Classes”语言更名为C++。C语言中“++”运算子的作用是对一个变量进行递增操作,由此我们多少可以知晓 Stroustrup 对这种新语言的定位。这个时期,许多重要的特性被加入,其中包括虚函数、函数重载、引用机制(符号为&)、const 关键字以及双斜线的单行注释(从 BCPL 语言引入)。
1985 年,Stroustrup 的 C++ 参考手册《C++ Programming Language》出版,同年,C++的商业版本问世。由于当时 C++ 并没有正式的语言规范,因此《C++ Programming Language》成了业界的重要参考。1989 年,C++再次版本更新,这次更新引入了多重继承、保护成员以及静态成员等语言特性。
1990 年,《Annotated C++ Reference Manual》发布,同年,Borland 公司的商业版 Turbo C++ 编译器问世。Turbo C++ 附带了大量函数库,这一举措对 C++ 开发产生了极为深远的影响。虽然 Turbo C++ 上一个稳定的版本发布于 2006 年,但当前该编译器仍被广泛使用。
1998 年,C++标准委员会发布了 C++ 语言的第一个国际标准—ISO/IEC 14882:1998,该标准即为大名鼎鼎的C++98。C++98 的提出,《The Annotated C++ Reference Manual》功不可没。同时,1979 年开始研发的标准模板库(Standard Template Library,STL)也被纳入了该版标准中。2003 年,标准委员会针对 98 版本中存在的诸多问题进行了修订,修订后发布了C++03。
2005 年,C++标准委员会发布了一份技术报告(Technical Report,TR1)详细说明了计划引入 C++ 的新特性。这个新标准被非正式地命名为C++0x,因为其预计会在本世纪第一个十年的某个时间发布。讽刺的是,直到 2011 年年中该标准才面世,相应的技术文档也随之出炉,一些编译器厂商也开始试验性地支持这些新特性。
2011 年中,新的 C++ 标准(C++11)面世。Boost 库对该版本影响很大,一些新的模块甚至直接衍生于 Boost 中相应的模块。一些新的语言特性,包括正则表达式(正则表达式详情)、完备的随机数生成函数库、新的时间相关函数,原子操作支持、标准线程库(2011 之前,C和 C++ 语言均缺少对线程的支持)、一种能够和某些语言中 foreach 语句达到相同效果的新的 for 语法、auto 关键字、新的容器类、更好的 union 支持、数组初始化列表的支持以及变参模板的支持等等。
翻译: 伯乐在线 - honpey
译文链接: http://blog.jobbole.com/64349/