C++的发展史

为了让小伙伴们在学习过程当中,能收获更多的知识,达到真正的零基础入门和深刻了解C++,老九君特意收集了有关C++发展相关的一些资料供你们查阅和学习:编程

C++语言发展大概能够分为三个阶段:安全

第一阶段:从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,而且凭借着接近C语言的效率,在工业界使用的开发语言中占据了至关大份额;
第二阶段:从1995年到2000年,这一阶段因为标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了愈来愈多的比重性。固然,同时因为Java、C#等语言出现和硬件价格的大规模降低,C++受到了必定的冲击;网络

第三阶段:从2000年至今,因为以Loki、MPL等程序库为表明的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。模块化

如下是C++发展年代列表:函数

1967 年,Simula 语言中第一次出现了面向对象 (OO) 的概念,但因为当时软件规模还不大,技术也还不太成熟,面向对象的优点并未发挥出来。工具

1980 年,Smalltalk-80 出现后,面向对象技术才开始发挥魅力。学习

1979 年,Bjarne Stroustrup 借鉴 Simula 中 "Class" 的概念,开始研究加强 C 语言,使其支持面向对象的特性。B.Stroustrup 写了一个转换程序 "Cfront" 把 C++ 代码转换为普通的 C 代码,使它在各类各样的平台上当即投入使用。1983 年,这种语言被命名为 C++。spa

1986 年,B.Stroustrup 出版了 《The C++ Programming Language》初版,这时 C++ 已经开始受到关注, B.Stroustrup 被称为 C++之父(Creator of C++)。设计

1989 年,负责 C++ 标准化的 ANSI X3J16挂牌成立。对象

1990 年,B.Stroustrup 出版了 《The Annotated C++ Reference Manual》(简称 ARM),因为当时尚未 C++ 标准,ARM 成了事实上的标准。

1990 年, Template(模板) 和 Exception(异常) 加入到了 C++ 中, 使 C++ 具有了泛型编程(Generic Programming)和更好的运行期错误处理方式。

1991 年,负责 C++ 语言国际标准化的技术委员会工做组 ISO/IEC JTC1/SC22/WG21 召开了第一次会议,开始进行 C++ 国际标准化的工做。今后,ANSI 和 ISO 的标准化工做保持同步,互相协调。

1993 年,RTTI(运行期类型识别) 和 Namespace(名字空间) 加入到 C++ 中。

1994 年, C++ 标准草案出台。B.Stroustrup 出版了《The Design and Evolution of C++》(简称 D&E)。原本,C++ 标准已接近完工,这时 STL(标准模板库) 的建议草案被提交到标准委员会,对 STL 标准化的讨论又一次推迟了 C++ 标准的出台。
1998 ,ANSI 和 ISO 终于前后批准 C++ 语言成为美国国家标准和国际标准。
2000 ,B.Stroustrup 推出了 《The C++ Programming Language》特别版(Special Edition),书中内容根据 C++ 标准进行了更新。

 语言的发展是一个逐步递进的过程,C++ 是直接从 C 语言发展过来的,而 C 语言是从 B 语言发展过来的,B 语言是 BCPL 的一个解释性后代,BCPL 是 Basic CPL。其中最有趣的是 CPL 中 C 的由来,因为当时这个语言是剑桥大学和伦敦大学合做开发的,在伦敦的人员加入以前,C 表示剑桥、伦敦人员加入以后,C 表示 Combined 组合。还有一种非正式的说法,C 表示 Christopher,由于 Christopher 是 CPL 背后的主要动力。

    最初致使C++诞生的缘由是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工做开始于1979年4月,当时因为没有合适的工具可以有效的分析因为内核分布而形成的网络流量,以及怎样将内核模块化。同年10月,Bjarne博士完成了一个能够运行的预处理程序,称之为Cpre,它为C加上了相似Simula的类机制。在这个过程当中,Bjarne博士开始思考是否是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让Bjarne博士等人组成一个开发小组,专门进行研究。

    当时不是叫作C++,而是C with class,这是把它看成一种C语言的有效扩充。因为当时C语言在编程界居于老大的地位,要想发展一种新的语言,最强大的竞争对手就是C语言,因此当时有两个问题最受关注:C++要在运行时间、代码紧凑性和数据紧凑性方面可以与C语言相媲美,可是还要尽可能避免在语言应用领域的限制。在这种状况下,一个很天然的想法就是让C++从C语言继承过来,可是咱们的Bjarne博士更具备先见之明,他为了不受到C语言的局限性,参考了不少的语言,例如:从Simula继承了类的概念,从Algol68继承了运算符重载、引用以及在任何地方声明变量的能力,从BCPL得到了//注释,从Ada获得了模板、名字空间,从Ada、Clu和ML取来了异常。

    C++语言既保留了C语言的有效性、灵活性、便于移植等所有精华和特色,又添加了面向对象编程的支持,具备强大的编程功能,可方便地构造出模拟现实问题的实体和操做;编写出的程序具备结构清晰、易于扩充等优良特性,适合于各类应用软件、系统软件的程序设计。用C++编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%~20%。

C++语言具备如下特色:

    C++是C语言的超集。它既保持了C语言的简洁、高效和接近汇编语言等特色,又克服了C语言的缺点,其编译系统能检查更多的语法错误,所以,C++比C语言更安全。
    C++保持了与C语言的兼容。绝大多数C语言程序能够不经修改直接在C++环境中运行,用C语言编写的众多库函数能够用于C++程序中。
    支持面向对象程序设计的特征。C++既支持面向过程的程序设计,又支持面向对象的程序设计。
1.C++程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言获得了提升,使其更适合开发大中型的系统软件和应用程序。
2.C++设计成静态类型、和C一样高效且可移植的多用途程序设计语言。
3.C++设计成直接的和普遍的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
4.C++设计成给程序设计者更多的选择,即便可能致使程序设计者选择错误。
5.C++设计成尽量与C兼容,籍此提供一个从C到C++的平滑过渡。
6.C++避免平台限定或没有广泛用途的特性。
7.C++不使用会带来额外开销的特性。
8.C++设计成无需复杂的程序设计环境。

出于保证语言的简洁和运行高效等方面的考虑,C++的不少特性都是以库(如STL)或其余的形式提供的,而没有直接添加到语言自己里。

 

老九学堂出品

相关文章
相关标签/搜索