C++发展概述

C++是一门以C为基础发展而来的一门面向对象的高级程序设计语言,从1983年由Bjarne Stroustrup教授在贝尔实验室创立开始至今,已有30多个年头。C++从最初的C with class,经历了从C++98、C++ 03、C++ 11、C++ 14再到C++17多次标准化改造,功能得到了极大的丰富,已经演变为一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式的复杂编程语言,入门具有一定的难度。由于C++过于复杂,并且经历了长时间的发展演变,目前对于C++标准支持的较好主要有GNU C++和Visual C++,严格来说,目前还没有一个完全支持ISO C++的版本。

1954年,John Backus发明了世界上第一种计算机高级语言Fortran,为之后出现的高级编程语言奠定了基础。1970年,AT&T的Bell实验室的 Ken Thompson,以BCPL语言为基础,设计出简单且接近硬件的B语言(取BCPL的首字母),并且他用B语言写了第一个Unix操作系统。到了1972年,Bell实验室的Dennis Ritchie和Ken Thompson共同发明了C语言,并使用C重写Unix。1979年,Bjame Stroustrup到了Bell实验室,开始从事将C改良为带类的C(C with Classes)的工作,1983年该语言被正式命名为C++,主要意图是表明C++是C的增强版,1985年发布了第一个C++版本。

第一个版本的C++,因其面向对象的思想使得编程变得简单,并且又保持了C语言的运行效率,在推出的一段时间内,得到了快速的发展,占据了编程语言界的半壁江山。从1985年到1998年,C++从最初的C with Classes新增了很多其他的特性,比如异常处理、模板、标准模板库(STL)、运行时异常处理(RTTI)与名字空间(Namespace)等。1998年,C++标准委员会统筹C++的所有特性,发布了第一个C++国际标准C++98。从1998年到2003年,是C++标准从C++98到C++03的迭代期,期间C++扩增了很多额外的特性,比如以Boost MPL(Boost Metaprogramming Library)与Loki等为代表的模板元编程库的出现,让开发者更加便捷的使用C++在编译期的执行能力,即通过代码编译获得计算结果,学术性的称为模板元编程。到了2003年,C++标准委员会总结最新技术并发布了C++03标准。从2003年到2011年,也就是从C++03到C++11,期间C++引入了对象移动、右值引用、lamba表达式(函数式编程)、编译时类型识别(auto)、别名模板以及很多新型关键词(如nullptr、decltype、constexpr)等现代编程语言常具备的能力,让C++与时俱进,开发效率得到了很大的提升。这些新的特性随着C++11标准的发布而被正式确立下来。近年来,C++标准的变更周期缩短,由C++11到C++14以及最近的C++17都只用了3年的时间。C++14引入了二进制文字常量、将类型推导从Lambda函数扩展到所有函数、变量模板以及数字分位符等。C++14 是对 C++11的重要补充和优化,是C++发展历程中的一个小型版本,虽然新增的内容较少,但是仍然为用户“带来了极大的方便”,为实现使C++“对新手更为友好”这一目标作出努力。到了2017年,C++迎来了C++17标准。此次对C++的改进和扩增,让C++变得更加容易接受和便于使用了。C++17引入了许多新的特性,比如类模板参数推导、UTF-8文字常量、fold表达式、新类型以及新的库函数等。

C++仍在不断的发展,下一个版本将是C++20,C++历史上的标准变更如下。

年份

C++ 标准名称

非正式名称

1998

ISO/IEC 14882:1998

C++98

2003

ISO/IEC 14882:2003

C++03

2011

ISO/IEC 14882:2011

C++11

2014

ISO/IEC 14882:2014

C++14

2017

ISO/IEC 14882:2017

C++17

2020

Yet to be determined

C++20

语言的发展是一个逐步递进的过程,C语言也不例外,C语言也有自己的标准。C语言从1972诞生以来,先后经历了K&R C、ANSI C、C89、C99和最新的C11标准的变更,其特性不断丰富,功能不断强大。语言的发展也是相互促进和交融吸收的,C++是直接从C语言发展过来的,而C语言是从B语言发展过来的,B语言则是从BCPL发展而来,BCPL(Basic CPL)则从CPL发展而来,CPL则从ALGOL60演变而来。每一门新语言的诞生以及后续的演变和发展,都站在了其他语言的肩膀之上,取其精华,弃其糟粕,让语言变得更加的强大。


参考文献

[1]C++元编程和Boost编程库 [2]C++的发展过程和历史 [3]C++17.Wikipedia

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

前端面试:链家 -3月24日

一面 1. React组件通信 2. 什么是原型 3. CSS定位属性,怎么定位的 4. TCP与HTTPS的区别 5. 怎么获得对象上的属性(面试官期待的是O...

45311
来自专栏Python爬虫与数据挖掘

爬取手机靓号-看手机号到底有多好

前几天分享了如何使用pyecharts,但是只是用一些简单的数据,感觉有一点不真实。今天就来实战演练一下。从爬虫,到数据清洗,到数据库,最后可视化,带你完成这个...

882
来自专栏程序员八阿哥

小白Pycharm使用(1):10个最省时间的 PyCharm 技巧

这篇文章的作者名叫刘善国。他此前在工厂工作,去年10月开始Python Web的学习,前不久成功拿到上海某互联网公司的 Python 工程师 offer,顺利完...

1272
来自专栏企鹅号快讯

浅谈python,c,java,优劣,语言高低与效率相反的不变规律

[菜鸟普及]浅谈c,java,python优劣,语言高低与效率相反的不变规律 此文于2011年04月16日,在我的微博原创发布。 很少写关于学习计算机语言的普及...

7029
来自专栏牛客网

滴滴面试

3865
来自专栏Java Web

秋招提前批小结(CVTE一面挂、阿里三面挂)

1.自我介绍 2.有没有做过JavaWeb相关的项目?你觉得难点在哪里呢? 3.你这个博客系统有没有加权限系统?如果被拦截封包获取了账号密码怎么办?(没加,...

3191
来自专栏何俊林

如何追求高质量的代码?

成长总是很痛苦的,每天总是不舒适的,尤其是被问到一层又一层的点时,很多人总是说自己精通这个精通那个,实际飘的很,最表面的东西,谁都想得到,能在表象之上想通一个局...

1838
来自专栏月牙寂

golang设计模式的一些看法

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

3195
来自专栏SnailTyan

C语言的起源

C语言是贝尔实验室的Dennis Ritchie于1969年~1973年间创建的。美国国家标准学会(American national standards in...

2170
来自专栏喔家ArchiSelf

IOT语义交互性之词汇定义

只是限于能力有限,却始终没有什么建树。如今,区块链的出现可能会解决可信的问题。接下来闲暇的时候,需要好好学习一下。安全对于任何互联网应用都是及其重要。无所不在指...

1464

扫码关注云+社区

领取腾讯云代金券