共计 1964 个字符,预计需要花费 5 分钟才能阅读完成。
C++ 的起源能够追溯到 40 年前,但它依然是当今应用最宽泛的编程语言之一。
到 2020 年 9 月为止,C++ 是仅次于 C 语言、Java 和 Python,位于寰球第四的编程语言。依据最新的 TIOBE 索引,C++ 也是增长最快的语言。
近日,C++ 之父 Bjarne Stroustrup 在承受外媒访谈的时候,对 C++ 胜利的要害和 它 40 年来的倒退历程进行了回顾。
C++ 的胜利属于意料之外
1979 年,C++ 的创建者 Bjarne Stroustrup 开始着手开发这种编程语言,该语言最后被设计为对 C 语言对改进版,减少了基于面向对象编程的性能。
Bjarne Stroustrup 一开始没想到 C++ 会取得如此大的胜利,他说:“C++ 的胜利显然令人诧异。我认为它的胜利取决于其最后的设计指标,就是无效的应用硬件,再加上弱小的形象机制,以及它依据来自理论应用状况的反馈进行审慎的倒退。”
构建 C++ 之初,Bjarne Stroustrup 心愿用通信零碎构建一个多计算机系统,该通信零碎能够是共享内存,也能够是网络。他把重点放在了软件上,去编写底层的、靠近硬件的代码。例如存储管理器,过程调度程序和设施驱动程序,以及拆散软件组件,便于它们能够在运行应用更好的形式运行。
40 年前,是没有编程语言能够胜任这项工作的,Bjarne Stroustrup 对此花了很多心理。
当初,C++ 曾经成为了最受开发人员欢送的语言之一,坚固了寰球的零碎和服务。
C++ 11 使 C++ 成为一种新的语言
他从很早开始就意识到了这项工作不可能由他一个人来实现,但过后也只有 Bjarne Stroustrup 和他在贝尔实验室的几个共事全身心的投入其中。随着标准化过程放慢,退出其中的人也越来越多,现在 C++ 规范委员会已有了 400 多名成员和更宽泛的用户群体,他们共同努力影响着编程语言的倒退方向。
1998 年是 C++ 正式标准化的一年,从那时起它就成了工夫是最罕用的编程语言之一,并至今都放弃着这种位置。
Bjarne Stroustrup 说,其后 13 年到来的 C++ 11 为 C++ 的倒退奠定了根底,他说:“C++ 11 使 C++ 感觉像是一种新的语言。”对并发的类型平安的反对是必不可少的,C++ 提供了相互支持的性能密集网络,例如用于编译时计算的函数、主动类型推导和可变参数模板的函数等等。
正如 Bjarne Stroustrup 所说,C++ 11 增加了一些新性能,这些性能能够使事件变得更简略,同时放弃了兼容性和稳定性。不过,只管 C++ 11 引入了一些使该语言更简略、更快、更具表现力的新性能,但它还是十分难把握的。
Bjarne Stroustrup 坦言:“C++ 的确很简单,要学会很好的应用它须要付出很多致力,但很多人想要的是更简略还具备更多功能的语言,并且不会毁坏现有代码。”
对一种编程语言来说,最大的挑战之一是就决定采纳和疏忽哪些性能达成共识,这自身就须要大量的致力,破费很多工夫去探讨。但即便是这样,也不是所有好的性能都能够被采纳,必须增加真正对人们有帮忙的货色。
C++ 风行几十年的秘诀
对于如何在几十年中放弃 C++ 生存的秘诀,Bjarne Stroustrup 提到,“应该从小做起,说明长期现实,并依据理论应用状况的反馈来倒退。”
的确,C++ 走到明天曾经超过 35 年了,明天的 C++ 比晚期的 C++ 更加弱小且富裕表现力。然而,直到明天,它的一些简略程序仍在运行。
对于应用了数十年的零碎来说,稳定性是一种十分重要的语言性能。事实上,许多晚期的想法只有在 C++ 20 中才可用。Bjarne Stroustrup 说:“从一开始我就晓得我无奈构建现实的语言,所以我必须以渐进倒退为指标。我不置信有完满的语言,这对语言自身和应用语言的人都有不同的规范。”
Bjarne Stroustrup 还补充道:“进化是应答一直变动的世界的挑战和交融新思维的必要条件。”
C++ 是所有的有形根底
C++ 是一种通用的编程语言,因为其弱小的性能和灵活性而受到开发人员的青眼,这使其成为操作系统、Web 浏览器、搜索引擎(包含 Google)、游戏和商务应用程序等的现实抉择。Bjarne Stroustrup 总结道:“如果有一个问题须要高效应用硬件并解决相当大的复杂性,那么 C ++ 显然是不错的抉择。”
Bjarne Stroustrup 还提到,COVID-19 大风行妨碍了 C++ 下的两个迭代 C++ 20 和 C++ 23 的停顿。将来他们会推出新性能,并在每三年公布一次订正的规范,C++ 17 和 C++ 20 也会按时交付。
然而,只管 C++ 曾经宽泛风行,但 Bjarne Stroustrup 还是认为很难精确指出它的用处。他说:“在任何大型零碎中,通常会在较低级别和对性能至关重要的局部中找到 C++。最终用户甚至零碎的其余局部的开发人员通常都看不到零碎的这些局部,因而有时我指的是 C++ 是所有的有形根底。”