C++官网参考链接:History of C++ - C++ Information (cplusplus.com)
C++的历史
C++编程语言的历史可以追溯到1979年,当时Bjarne Stroustrup正在写他的博士论文。Stroustrup有机会使用的语言之一是一种名为Simula的语言,顾名思义,这是一种主要为模拟设计的语言。Stroustrup使用的Simula 67 语言(The Simula 67 language)被认为是第一种支持面向对象编程范式的语言。Stroustrup发现这种模式对于软件开发非常有用,但是Simula语言对于实际使用来说太慢了。
此后不久,他开始研究“具有类(class)的C”,顾名思义,这是C语言的一个超集。他的目标是将面向对象编程添加到C语言中,C语言过去和现在都因其可移植性而备受推崇,同时又不牺牲速度和底层功能。他的语言除了C语言的所有特性之外,还包括类(classes)、基本继承(inheritance)、内联(inlining)、默认函数实参(default function arguments)和强类型检查。第一个带有类编译器的C语言叫做Cfront,它是由一个叫做CPre的C编译器派生出来的。这是一个旨在将具有类(class)的C语言代码转换为普通C语言的程序。
值得注意的是,Cfront主要是用带类的C语言编写的,这使它成为一个自托管编译器(可以编译自己的编译器)。Cfront后来在1993年被放弃了,因为很难将新的特性集成到Cfront中,也就是C++异常(exceptions)。尽管如此,Cfront对未来编译器的实现和Unix操作系统产生了巨大的影响。
1983年,语言的名称从C with Classes改为C++。C语言中的++操作符是一个递增变量的操作符,这让我们对Stroustrup如何看待这门语言有了一些了解。这个时期增加了许多新特性,其中最值得注意的是虚函数(virtual functions)、函数重载(function overloading)、带有&符号的引用、const关键字以及使用两个正斜杠的单行注释(这是BCPL语言的一个特性)。
1985年,Stroustrup发表了一篇题为The C++ Programming Language的文章。同年,C++被实现为商业产品。这种语言还没有正式标准化,这使得这本书成为一个非常重要的参考资料。1989年,该语言再次进行了更新,包括受保护(protected)成员和静态(static)成员,以及对几个类的继承。
1990年,The Annotated C++ Reference Manual发布。同年,Borland的Turbo C++编译器将作为商业产品发布。Turbo C++添加了大量额外的库,这些库对C++的开发有相当大的影响。尽管Turbo C++的最后一个稳定版本是在2006年,但编译器仍然被广泛使用。
1998年,C++标准委员会发布了第一个C++国际标准C++ ISO/IEC 14882:1998,它被非正式地称为C++98。据说,The Annotated C++ Reference Manual对标准的发展产生了很大的影响。标准模板库(The Standard Template Library)于1979年开始其概念发展,它也包括在内。2003年,委员会根据1998年的标准对多个问题做出了回应,并对标准进行了相应的修订。改变后的语言被命名为C++03。
2005年,C++标准委员会发布了一份技术报告(命名为TR1),详细描述了他们计划添加到最新C++标准中的各种特性。新标准被非正式地命名为C++0x,因为它预计将在第一个十年结束前的某个时候发布。然而,具有讽刺意味的是,新标准直到2011年中期才发布。在此之前发布了一些技术报告,一些编译器开始为新特性添加实验性支持。
在2011年中期,新的C++标准( the new C++ standard)(被称为C++11)完成了。Boost库项目(Boost library project)对新标准产生了相当大的影响,其中一些新模块直接派生自相应的Boost库。一些新特性包括正则表达式支持(可以在这里(here)找到关于正则表达式的详细信息),一个全面的随机化库、一个新的C++时间库、原子支持、一个标准线程库(直到2011年C和C++都没有)、一个新的for循环(for loop)语法提供类似在某些其他语言中foreach循环的功能、auto关键字、新的容器类,更好地支持联合(union)和数组初始化列表以及可变模板。