发展阶段
第一阶段
从80年代到1995年,这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额。
第二阶段
从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击。
第三阶段
从2000年至今,由于以Loki、MPL(Boost)等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
C++名称由来
在20世纪80年代,比雅尼·斯特劳斯特鲁普博士在贝尔实验室工作期间发明并实现了C++。C++这个名称是Rick Mascitti在1983年中所提出的,并于1983年12月首次使用。在更早的时候,这个尚在研究阶段的语言曾被称为“new C”,之后又被称作“C with Classes”(“包含‘类’的C语言”)。它表明这种新语言是在C基础上研发的,是C语言的超集。它最后得名于C语言中的“++”运算符(其对变量的值进行递增)。而且在共同的命名约定中,使用“+”以表示增强的程序。斯特劳斯特鲁普说:“这个名字象征着源自于C语言变化的自然演进”。C+是一个和C/C++无关的早期编程语言。 Rick Mascitti在1992年被非正式地问起名字的由来,他表示这是在半开玩笑中说出的。他从没想过C++会成为这门语言的正式名字。 有一个关于C++名字的笑话是,当你使用后缀++时,附加只发生在运算之后(因此,它应该是++C,而不是C++,这个笑话是说时下某些程序员还在以使用C的方式使用C++,这通常被一些权威著作认为是不正确的)。 作为C语言的增强版出现。随后,C++不断增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(runtime type information)、名字空间(namespace)等概念逐渐纳入标准。
C++标准
由ISO/IEC JTC1/SC22/WG21制定,已经出版的标准文档如下
| 发布时间 | 文档 | 通称 | 备注 |
|---|---|---|---|
| 1998 | ISO/IEC 14882:1998 | C++98 | 第一个C++标准 |
| 2003 | ISO/IEC 14882:2003 | C++03 | 第二个C++标准 |
| 2006 | ISO/IEC TR 18015:2006 | / | C++性能技术报告 |
| 2007 | ISO/IEC TR 19768:2007 | C++TR1 | C++技术报告:库扩展 |
| 2010 | ISO/IEC TR 29124:2010 | / | 数学函数扩展 |
| 2011 | ISO/IEC 14882:2011 | C++11 | 第三个C++标准 |
| 2011 | ISO/IEC TR 24733:2011 | / | 十进制浮点扩展 |
| 2014 | ISO/IEC 14882:2014 | C++14 | 第四个C++标准 |
| 2015 | ISO/IEC 18822:2015 | filesystem TS | 文件系统 |
| 2015 | ISO/IEC TS 19570:2015 | parallelism TS | 用于并行计算的扩展 |
| 2015 | ISO/IEC TS 19841:2015 | TM TS | 事务性内存操作 |
| 2015 | ISO/IEC TS 19217:2015 | conecpts TS | 概念库,用于优化编译器信息 |
| 2016 | ISO/IEC TS 19571:2016 | concurrency TS | 用于并发计算的扩展 |
| 2017 | ISO/IEC TS 19568:2017 | library fundamentals TS | 标准库扩展 |
| 2017 | ISO/IEC TS 21425:2017 | ranges TS | 提供范围机制 |
| 2017 | ISO/IEC 22277:2017 | conroutines TS | 协程库扩展 |
| 2017 | ISO/IEC 14882:2017 | C++ 17 | 第五个C++标准 |
| 2018 | ISO/IEC TS 19216:2018 | networking TS | 网络库 |
| 2018 | ISO/IEC TS 19570:2018 | parallelism TS | 并行扩展 |
| 2018 | ISO/IEC TS 21544:2018 | modules TS | 模块 |
| 2020 | ISO/IEC 14882:2020 | C++20 |
C++之父
本贾尼
1950 年 12 月 30 日,Bjarne Stroustrup 在丹麦出生,他以创造编程语言 C++ 而闻名,被称为“C++ 之父”。
用他本人的话来说,自己“发明了 C++,写下了它的早期定义并作出了首个实现……选择制定了 C++ 的设计标准,设计了 C++ 主要的辅助支持环境,而且负责处理 C++ 标准委员会的扩展提案。”Bjarne Stroustrup 还为 C++ 写了一本《C++ 程序设计语言》,被许多人认为是 C++ 的范本经典;他如今 71 岁,是哥伦比亚大学的客座教授,在美国纽约的国际金融服务公司摩根士丹利(Morgan Stanley)担任信息技术部的董事总经理。
