C++编程语言是如何成为一切事物的无形基础的,接下来会发生什么

2020-11-14 08:27:21

强大、灵活、复杂:C++的起源可以追溯到40年前,但它仍然是今天使用最广泛的编程语言之一。TechRepublic采访了C++的创建者Bjarne Stroustrup,找出了原因。

C++的起源可以追溯到1979年,当时编程语言Bjarne Stroustrup的创建者Bjarne Stroustrup第一次开始开发当时被称为C语言的类。该语言最初是作为对C编程语言的改进而设计的,C编程语言添加了基于面向对象编程的功能。

斯特罗斯特鲁普在接受TechRepublic采访时表示,C++的成功显然令人意外。我认为C++的成功得益于其最初的设计目标--高效使用硬件,外加强大的抽象机制--以及基于实际使用反馈的谨慎演变。如今,C++语言是最受开发人员欢迎的语言之一,并支撑着世界各地的系统和服务。

斯特劳斯特鲁普解释说:我想打造一个多计算机系统,它的通信系统既可以是共享内存,也可以是网络。

我的重点是软件。我需要编写低级的、接近硬件的代码,例如内存管理器、进程调度程序和设备驱动程序,以分离软件组件,这样它们就可以运行在以明确定义的方式通信的不同计算机上。

当时的任何语言都不能胜任这项任务,所以斯特劳斯特鲁普致力于建立一些能够胜任这项任务的东西。他说,C++类结合了C++接近硬件的能力和Simula类在抽象和代码组织方面的高效变体。

从很早的时候起,斯特劳斯特鲁普就意识到他不能独断专行地控制语言。虽然C++的早期工作只涉及他和贝尔实验室的几个同事,但当标准化语言的努力开始时,这一工作激增到几十个。

如今,C++标准委员会大约有400名成员,此外还有更广泛的用户群体,他们关注并试图影响语言的发展方向。

那么,在如此热情的情况下,如何保持一门编程语言的连贯性呢?斯特罗斯特鲁普说,这既是一个机遇,也是一个巨大的问题。

最困难的部分是决定什么是重要的,并保持连贯性。一旦你知道你想要什么,最终你会找到一个很好的技术方法来实现它。

1998年是C++正式标准化并成为可靠的主力的一年。在这一点上,C++是世界上最常用的编程语言之一,这一地位一直保持到今天。

然而,斯特鲁斯特鲁普说,正是13年后C++11的出现为这门语言的未来发展奠定了基础。他说,C++11让C++感觉像是一门新语言。

对并发性的类型安全支持是必不可少的。C++11提供了一个由相互支持的特性组成的密集网络,例如用于编译时计算的[常量表达式]函数、lambdas、自动类型推断和各种模板。";

虽然C++11引入了几个新的特性和功能,使这种语言更简单、更快速、更有表现力,但它仍然保持着难以掌握的名声--它的创建者很容易证明这一点。

斯特罗斯特鲁普说,C++确实很复杂,要学会很好地使用它是需要付出努力的。不幸的是,人们不仅仅想要简单,他们想要的是一些不可能实现的东西:一种更简单的语言,有更多的功能,并且不会破坏他们现有的代码。

Stroustrup对此的答案是增加一些功能,让简单的事情变得容易做--例如,通过泛化或直接支持常见用例--同时保持兼容性和稳定性。这就是他所说的“三难困境”。

对于像C++或任何主要编程语言这样大的东西来说,这说起来容易做起来难。Stroustrup解释说,最大的挑战之一是就决定采用和省略哪些新功能达成共识,这本身就需要大量的努力、讨论、时间和耐心。

即便如此,也不是所有的好功能都能被带上船。他解释说,你必须试着只添加真正对人有帮助的东西,然后只添加几个这样的东西--因为如果我们接受了每一个能帮助别人的功能,语言就会被它自己的重量压垮。

Stroustrup指的是17世纪一艘宏伟的瑞典战舰瓦萨号(Vasa),由于设计拙劣,它在首航中在斯德哥尔摩港口沉没。

在国王(最高管理层)的坚持下,不顾技术人员更好的判断,它被高高地堆起了美丽的雕像和大炮。船顶沉甸甸的,被一阵风吹翻了。

我反复谈论和撰写关于VASA的文章,以告诫那些热衷于通过添加功能来改进C++的人们:记住Vasa!到目前为止,C++还没有失败过。

这么多年后让C++继续运行的秘诀是什么?你从小事做起,阐明基本原则,阐明长期理想,并根据实际使用的反馈进行发展。

事实上,在C++首次出现35年后,它仍然很强大。今天的C++比早期的C++强大得多,表现力也更强。然而,即使到了今天,最初的设计仍然可见。

斯特罗斯特鲁普说,早些年--40年前--有一些简单的项目至今仍在运行。

稳定性是用于必须工作数十年的系统的语言的一个重要特征。事实上,许多早期的想法只有在C++20中才有。我从一开始就知道我不能构建理想的语言,所以我必须以循序渐进的发展为目标--进化。事实上,我并不相信完美语言的概念--完美的语言是什么?为谁?";

他补充说:进化对于应对不断变化的世界的挑战和吸收新思想是必要的。

截至2020年9月,C++是全球第四大最受欢迎的编程语言,仅次于C、Java和Python,而且--根据最新的TIOBE指数--也是增长最快的。C++是一种通用编程语言,因其强大和灵活而受到开发人员的青睐,这使其成为操作系统、网页浏览器、搜索引擎(包括谷歌)、游戏、商业应用程序等的理想选择。

Stroustrup总结道:如果你有一个需要高效使用硬件和处理巨大复杂性的问题,那么C++是一个明显的选择。如果你没有这两种需求,低级的高效语言或者高级的浪费语言都可以。

然而,尽管C++广受欢迎,但Stroustrup指出,很难准确指出C++在哪里使用,以及为什么使用。

在任何大型系统中,您通常会发现C++位于较低级别和性能关键的部分。系统的这些部分通常是终端用户看不到的,甚至系统其他部分的开发人员也看不到,所以我有时把C++称为一切事物的无形基础。

他还强调了开发人员调查在评估给定编程语言的受欢迎程度方面的相对不可靠性:计算程序员人数既难又简单。网络调查通常只衡量噪音,也就是说,人们谈论的是什么,而不是正在使用的是什么。

如今,斯特罗斯特鲁普是摩根士丹利(Morgan Stanley)的技术研究员。他在国际标准化组织(ISO)的C++标准和C++核心准则方面的工作被认为是他在这家金融巨头的工作的一部分,他仍然非常参与C++的开发。

最值得注意的是,Stroustrup是方向小组的一部分,该小组提出并讨论关于编程语言未来的建议。他还关注进化组,并参与有关新语言特性的讨论。

然而,当涉及到C++的日常运行时,Stroustrup很乐意扮演更重要的角色。我关注行政活动,但在那里尽量少做些事情。我不是一个伟大的管理者,他承认。

在大流行之前,Stroustrup会跑很多地方去传授知识,并通过他的书籍、文章和采访向全世界解释C++-尽管和世界其他地方一样,2020年暂时结束了这种情况。

斯特罗斯特鲁普说:对于我的工作,我非常依赖于与人们交谈,以了解他们的问题,倾听我的想法对他们有何帮助。

在这个大流行的时刻,我被剥夺了急需的反馈。虚拟谈话和访谈是不一样的,在讨论设计和想法时,Zoom会议的活力不如真正的面对面会议。

新冠肺炎的流行也阻碍了C++20和C++23语言的下两个迭代的进展,尽管Stroustrup确认几乎所有的C++20都将在2020年发布。

除此之外,还有Unicode、数字、游戏开发和低延迟、工具、人工智能等方面的工作,他说。

当一个特性(语言和库)准备好时,我们会发布它,并且我们每三年发布一次修订后的标准。C++14、C++17和C++20按时发货。值得注意的是,标准工作和主要实现者非常同步。

从最热门的编程语言到薪水最高的工作,获取你需要知道的开发者新闻和小贴士。每周。

今天报名