C++:Bjarne Stroustrup关注分布式系统、类型安全和锈蚀

2020-08-03 20:43:41

今年6月,C++编程语言的创造者,69岁的Bjarne Stroustrup代表计算机器协会的编程语言特别兴趣小组出现在YouTube的频道上。

在将他的语言带到世界上大约35年后,Stroustrup将他最早的目标与这种语言最终是如何发展的进行了比较,分享了一些关于世界上其他编程语言的想法,并透露了当他没有带领这种语言的庞大用户社区时,他做了什么。他还花了一些时间来解释为什么C++“比几十年前要好得多”。

考虑到这是一个“问我任何问题”式的会议,有人问他,如果他可以乘坐时光机回到他创造这种语言的那一天,他会做什么改变,斯特劳斯特鲁普回答说,“Um…。这是一个时光机问题,我们没有时光机。“。然后他继续解释说,这给我们留下了什么。

“编程语言设计的一个有趣的方面是,如果你成功了,你就会拥有很多很多年甚至几十年前做过的事情,你必须接受它。一旦你得到了用户,你就有了责任,而责任之一就是不能破坏他们的代码。所以稳定就成了一个很大很大的问题。外面有几千亿行C++,我们不能破坏它们。“他说。

后来他补充说,就语法而言,他很早就决定避免重新发明轮子,因为他正在从已经存在的C编程语言扩展约定。“我刚开始的时候就知道这是个麻烦。但是,已经有了一个C社区,我可以花时间教人们如何编写for循环,也可以提供一个像样的类概念。我不能两者兼得。没有时间了,…“。

但除了将面向对象添加到C语言之外,他还记得自己最早的C++设计目标。“我想要非常大的言论自由,非常大的概括性。我希望性能可与手工编写的C语言相媲美,直接在机器上运行。我想要基本的类型安全。考虑到时间、技术和知识,我得到了三分中的两分。在接下来的20年里,我一直在试图弄清楚我们是如何实现这三个目标的。“。

当我听到人们谈论C++时,我有点难过,好像他们回到了20世纪80年代、90年代,很多人都是这样做…的。他们在黑暗时代看过它,从那以后就再也没有看过了。“-比昂·斯特罗斯特鲁普(Bjarne Stroustrup)。

但是要添加第三个缺失的东西-类型安全-C++现在有一个特性(名为“概念”),可以限制语言的函数模板的数据类型。在稍后的回答中,Stroustrup详细说明了这一点,他补充道:“我不是模板元编程的狂热爱好者。它是丑陋的,复杂的,而且如此有用,以至于理智的人会不顾它的问题而去做它。所以我想做的是用更简单的东西取代模板元编程中难看和复杂的部分。更简单的是泛型编程。“。泛型编程涉及使用稍后指定的类型,Stroustrup解释说“概念是其中的一部分。你可以对你的参数进行适当的类型检查,你可以处理需求,你可以重载需求,这样你就可以根据需求有两个不同的函数。“

他后来补充说,“如果我能在1988年发明概念,当时我正在做这件事,我们今天会过得更好。”

从德里传来一个问题:他是否希望看到另一种流行语言(就像他将面向对象引入C语言那样)具有另一种现代必备的语言特性?但Stroustrup的回应似乎着眼于长远,回顾了近40年的情况。“如果你看到的是真正重大的事情,它们就不会经常出现。在Simula的面向对象编程包中有类,然后是类层次结构,这就是我与C语言合并的内容,从那时起,我就一直在研究泛型编程。“。

但他似乎对这种语言多年来的发展方式感到自豪。Stroustrup后来说:“当我听到人们谈论C++时,我有点难过,就好像他们回到了20世纪80年代、90年代,很多人都是这样做的。”“他们在黑暗时代看过它,从那以后就再也没有看过。”

当宾夕法尼亚州立大学的提问者问是什么让C++今天对人们有吸引力时,他已经准备好了。“更大的社区。更好的性能。更大的灵活性。这是个不错的开始。大量的工具支持,大量的库。这只是一种很好的、扎实的语言。“。他还描述了试图取代C++的语言会发生什么。首先,“当您简化一种语言以使其更容易时,通常会丢弃一些…”但即便如此,简化语言最终也只能走上两条路中的一条。“你失败是因为你不能让人们使用你的语言。或者你成功了,你的语言就会成长。“。他已经准备好举一个例子。“Java现在比它刚开始的时候更复杂、更大,是它的三倍、四倍、五倍,声称它比C++更好,因为它更简单。

后来,达拉斯的一位开发人员忍不住问Stroustrup他最喜欢的编程语言是什么,但Stroustrup并没有上钩。“我不相信有或可能有一种完美的编程语言--至少在我们所说的几十年或一百年的时间范围内不是这样。也许是一百年后,但不是在我有生之年。“。

他知道其他语言,正如他在回答后面的问题时所揭示的那样。(“我认为C++可以做Rust能做的任何事情,我希望它使用起来简单得多。”)。最后,他忍不住指出,长寿也有它的好处。“当”铁锈“的一些人走上前来,指责我在没有承认的情况下窃取了他们的一些想法时,这是非常幽默的-而我做的一些事情实际上是我在近40年前做的。”

其中一个最有趣的回答是一个相对简单的问题:你现在在做什么?斯特劳斯特鲁普讨论了他作为摩根士丹利技术研究员/董事总经理的“日常工作”,在那里他将自己的问题领域描述为“分布式系统、网络、在各种约束下将数据从A传送到B”…。我觉得这很有趣。这就是我的博士学位,所以从那以后我就一直在做这项工作。“。他还着手解决一些性能问题。(“当我在学术界的时候,我认为我知道什么是性能,因为我会数微秒。现在我要数纳秒了!“)。Stroustrup还对大型代码库提出了建议--“如何让大量代码变得可靠、可维护,使它们与现代的…保持同步?”每年,他还在哥伦比亚大学教授一门关于软件设计的课程。

当然,Stroustrup说他还有一项责任:“尽力照顾”C++标准过程。“人们对C++非常兴奋,以至于我们有250人参加了标准会议。让250个人同意任何事情都是非常困难的,而且要让大量的人群对时尚或新事物或诸如此类的东西感到兴奋也是相对容易的。所以我必须宣扬稳定和谨慎的进步,不要过分强调复杂性。“

在回答另一个问题时,他分享了一些未来可能会更遥远的设计目标。“我们即将推出一个更好的并发性模型。几乎可以肯定的是,它将出现在[C++版本]23中。它存在并且被使用过。它得到了脸书、英伟达和英特尔…等公司的支持。这就是我们将获得更好的并发性、更好地使用硬件…的地方。除此之外,我还关注函数式模式匹配。我在这方面已经工作了很长时间--我在C++17中提出了它。也许我们会在23或26年内实现它,但是当你移动一个非常庞大的社区时,事情进展得很慢。如果我们能做对,我会很高兴的。“。

但展望未来,他希望看到更多对分布式贡献的支持。

“这就是我开始做这件事的原因。我想构建第一个Unix集群-如果我设法完成它,而不是被C++分心的话。我希望能在语言或库中看到对与大量计算机和内核等实际通信的支持。我们非常擅长多核、多线程,诸如此类的东西。但是我想要得到非共享的记忆。

“不管怎么说,那是我个人的爱好--已经有很长一段时间了。”

Patreon的首席执行官分享了他的失败,“因为这是作为创造者的有趣部分。”

纪念史蒂夫·乔布斯“有史以来最酷的电脑”问世20周年--那台电脑失败了。

IEEE Spectrum使用11个指标创建了今年最热门编程语言的互动列表。

业余爱好者使用人工智能创建尼尔·阿姆斯特朗的月球漫步和其他太空第一的高分辨率镜头。