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支持、数组初始化列表的支持以及变参模板的支持等等。

收藏 1 评论

关于作者:honpey

(新浪微博:@Honpey) 个人主页 · 我的文章 · 1

可能感兴趣的话题



直接登录
最新评论
  • kedebug   2014/04/19

    YoHub是一款基于事件驱动的异步网络编程框架,代码在这里 https://github.com/kedebug/yohub 。主要语言是C++,大量用到了Boost里面的bind、function、shared_ptr等技术来管理资源,对C++感兴趣的同学可以过来瞧瞧。

跳到底部
返回顶部