上个月,C++ 20的国际标准草案投票结束,而且获得了全票通过,这预示着C++ 20将有望在年底正式发布, C++ 语言也将迎来一次非常重大的更新。
而在此之前,C++这门占有市场7%份额的主流编程语言已经诞生了有足足40多年,对于这门语言的历史和发展,你知道多少?
为了解决一个小问题
1982年,一个年轻人从剑桥毕业后获得了著名的贝尔实验室的工作机会,为了解决工作中遇到的一个小问题,他创造出了C++。这个人就是丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)。
刚到贝尔实验室的时候,Stroustrup在贝尔实验室从事将C改良为“带类的C(C with classes)”的工作。在工作中,他发现了Simula语言虽然具有对大型软件开发非常有帮助的功能,但是就实际体验而言,该语言实在太慢了。Stroustrup对Simula体系的运行效率非常不满意。
于是,Stroustrup开始着手自己编写语言,希望编写起来不仅简单、正确可靠,还能运行高效、可移植。他以C语言为背景,以Simula思想为基础,就此走上了C++的开发之路。
最初,他只是向C编译器Cpre添加了功能,包括类,派生类,强类型,内联和默认参数。到1982年,斯特劳斯特卢普开始使用Classes开发C的后继者,并最终将其命名为“ C++”。
自此,C++这门编程语言正式诞生。
最流行的语言之一
1985年,C++被商业化发布并得到迅速传播,一举成为20世纪90年代的主流面向对象编程语言,成为当时最流行的语言之一。
作为C++语言的奠基人,Stroustrup获得了1993年的格雷斯·默里·霍珀奖(ACM Grace Murray Hopper)。
在20世纪90年代早期,C++建立了第一个标准,成立了一个ANSI和ISO国际标准化组织的联合标准化委员会,该委员会在1994年1月25日提出了第一个标准化草案。
此后,为了帮助支持和发展C++社区,Stroustrup在C++标准委员会工作了超过25年,不断努力将C++改进为一个稳定、实用的工具。
这门语言也被广泛应用于各行各业,这令Stroustrup自己都感到惊讶:从电饭煲到太空火箭,放眼望去,汽车、电影、游戏、医药、金融、计算机、农业等等行业都有使用 C++。甚至人类基因组计划、欧洲核子研究中心和其他地方的基础物理研究还有火星探测器,C++ 都在其中发挥了作用。
由于编写这门语言的贡献,Stroustrup获得了许多荣誉:
2004年,Stroustrup成为美国国家工程院院士;
2005年,Stroustrup作为第一位计算机科学家获得西格马西(科学研究协会)颁发的威廉·普罗克特科学成就奖;
2015年,Stroustrup获得了被认为是软件工程领域最负盛名的奖项之一的达尔·尼加德奖;
2017年,Stroustrup获得了由工程技术的英国学会(IET)颁发的最高荣誉——法拉第奖(Faraday);
2018年,美国国家科学院将NEA的最高荣誉,也是工程师的世界最高荣誉之一的德雷珀奖颁发给Stroustrup。
如今,这门经久不衰的语言的故事还在延续。对此次C++20的更新,大家是否早已急不可耐?
C++20的四大新特性
可以确定的是,此次c++20更新,将会带来四大新特性的改变:
1.概念
使用模板进行通用编程,需要定义能通过各种类型(type)使用的函数和类。但在实例化模板时经常会出现用错类型的问题,其结果通常是几页难懂的报错信息。此次更新的概念让我们能为模板编写要求,编译器则可以检查这个要求,这革新了我们思考和编写通用代码的方式。
2.范围
范围库是概念的首个客户。它支持的算法满足以下条件:
◇可以直接在容器上操作;
◇无需迭代器指定一个范围;
◇可以宽松地评估;
◇可以组合。
3.协程
c++20提供的无栈协程,有三大优势:
◇没有传染性;
◇可以与以前非协程风格的代码并存;
◇不需要额外的调度器。
4.模块
◇模块承诺能够实现:
◇更快的编译时间;
◇宏的隔离;
◇表达代码的逻辑结构;
◇不必再使用头文件(header file);
◇摆脱丑陋的宏方法。
C++创始人亲授学习秘诀
创造出C++之后,Stroustrup对C++语言的推广也做出了极大的贡献。他写的书《C++程序设计语言》已经成为C++最为权威的学习资料,至少被翻译成18种语言。
现在,Stroustrup本人的另一本著作《C++语言的设计和演化》(The Design and Evolution of C++)也于今年9月出版啦。
C++语言的设计和演化
作者:[美]本贾尼·斯特劳斯特卢普 ( Bjarne Stroustrup )
作者:[美]本贾尼·斯特劳斯特卢普,[,Bjarne,Stroustrup,]
京东
作者:[美]本贾尼·斯特劳斯特卢普 ( Bjarne Stroustrup )
当当
内容简介:
在这本书中,作者全面论述了C++ 的历史和发展,C++中各种重要机制的本质、意义和设计背景,这些机制的基本用途和使用方法,讨论了C++ 所适合的应用领域和未来发展前景。
本书在帮助人们深入理解C++ 语言方面的地位无可替代,值得每个关心、学习和使用C++ 语言的专业工作者、科研人员、教师和学生阅读。
在这本书中,作者还从实践的角度出发,讨论了许多与程序设计语言、系统程序设计、面向对象的技术和方法、软件系统的设计和实现技术等有关的问题,值得每一个关心这些领域及相关问题的计算机工作者和学生们阅读参考。