首页 > 滚动 > > 内容页

焦点消息!那些意欲取代 C++ 的编程语言,成功了吗?

2023-01-23 10:11:31 站长之家

作者 | Lucian Radu Teodorescu

译者 | 禾木木


(资料图片)

2022年出现了许多可以与 C++ 竞争的语言。就在今年的 CPP North C++ 大会上,谷歌宣布了一门新的编程语言 Carbon,并称其将是「C++ 的继任者」。

对于这一事件,国外媒体和开发者们也询问了 C++ 之父 Bjarne Stroustrup 的看法,他表示:“这些年总是有新的语言试图成为 C++ 的继承者,我欢迎对编程语言和编程风格进android行实验。但 Carbon 太新且规范不足,我无法真正做出有意义的技术评论。而通常在不开发全新语言规则、库和管理方案的情况下,很难提供 C++ 的替代方案。”

该语言发出后,也让一众网友浅来围观,有支持,也有反对的声音。

近日,Garmin 的一名软件工程师 Lucian Radu Teodorescu 在文章中报道了目前 C++ 继任语言的技术状况。

C++ 是一种特殊的编程语言,也是最常用的编程语言之一,但它也是最受批评的语言之一。根据 TIOBE 指数,30年来,C++ 一直是排名前4的编程语言(使用12个月的平均值),并且还成功摘得了2022年的年度编程语言称号。

参见下图,可了解过去20年的语言趋势(2022年10月的TIOBE编程社区指数)。

对于一种已经存在了近40年的编程语言来说,能经常出现在顶级编程语言的名单中,的确是一个伟大的成就。在颇受欢迎的同时,C++ 的批评声却接连不断,例如 Liunx 之父直接说 C++ 是一门糟糕的语言。大部分的人都在抱怨这种语言太大了,太复杂了,有一些是应该被扼杀的功能,有太多的功能,反之,又有些功能不够用。以偏概全,C++ 可以被看作是一个没有清晰连贯的故事的各种功能的随机集合。

在为该语言辩护时,Bjarne Stroustrup 认为,"在 C++ 中,有一种更小、更干净的语言正在努力摆脱"。这句话在28年后的今天仍然被广泛使用。虽然这句话意在为 C++ 辩护,但如果仔细分析一下,就会发现这也是一种隐含的批评。C++ 仍然没有成为人们所期望的那种更小、更干净的语言。它可能仅仅意味着这种更小更干净的语言只是一个海市蜃楼。

意欲取代 C++ 的编程语言

那么问题来了,怎样才能获得一个更好的编程语言呢?它比现在的 C++ 更简单、更干净,并且与 C++ 占据同样的空间(系统编程语言)?一个 C++ 的继任语言是什么样子的?

虽然过去也有一些尝试,但像2022年这样的还是很少见的,一下子有3种继任者语言在 C++ 主题演讲中公布。

首先,有 Dave Abrahams 和 Dimitri Racordon 在 C++ Now 上宣布的 Val。Val 的核心思想是,我们可以使用可变值语义建立安全且高效的程序。

两个月后,在 CppNorth 上,Chandler Carruth 宣布了 Carbon 语言。Carbon 语言试图解决 C++ 的几个方面:几十年来积累的技术债务、优先考虑向后兼容性和 C++ 的进化过程。

又过了两个月,在 CppCon 上,Herb Sutter 宣布了 CppFront,作为 C++ 的可能继承者。他的主要目标是 "使 C++ 本身向前发展,并使 C++ 加倍发展",防止用户迁移到其他语言。宣称的目标是使 C++ 的安全性提高50倍,简单10倍。

本文作者 Lucian Radu Teodorescu 试图对这三种语言提供一个批判性的观点。他解释道:“这样做并不是认为它们不能成为 C++ 的继承者;恰恰相反,我试图在希望取代 C++ 的位置之前列出这些语言在需要解决的问题。虽然我确实有一些个人偏见,但我会尽力客观地进行分析。”

早期取代者

D 编程语言由 Walter Bright 创建,出现在2001年;在2007年时,Andrei Alexandrescu 加入了设计和开发工作。这种语言本应从 C++ 的错误中学习,并成为其继承者。它承诺了同样的效率水平,但增加了大量的新功能,并简化了 C++ 的一些更复杂的部分。D 的主页将 D 宣传为一种可以 "写得快、读得快、跑得快 "的语言。

D 已经吸引了一些商业用户,但可以说它并没有达到重要的编程语言的地位。Andrei 是作者长期以来的偶像之一,而且对 Walter 相当尊敬,但主要把 D 看作是一个语言功能的大集合,松散地绑在一起。在我看来,这门语言缺乏一个清晰的基础,可以让所有的功能都有凝聚力。

Go 编程语言于2009年由谷歌推出;1.0版本于2012年发布。这种语言的目标是让程序员 "大规模地构建快速、可靠和高效的软件"。Go 语言的设计者不喜欢 C++,因此,Go 似乎更像是 C 的进化,而不是 C++ 的进化。Go 在2022年才增加了泛型,并且仍然缺乏广泛使用的功能,如异常处理。

虽然 Go 可以说是一种成功的编程语言,但它的成功主要是在云计算业务中。尽管它取得了相对的成功,但它不能被称为 C++ 的继承者。

Rust 是 Mozilla 开发的一种编程语言,2010年时公布,第一个版本在2015年发布。Rust 专注于可靠(内存和线程安全)和高效的软件。Rust 语言模型是围绕着所谓的借用检查器,它能跟踪所有对象的生命周期;因此,它可以在编译时检测安全错误,并不需要使用垃圾收集器。

Rust 虽然不像 Go 那样流行,但似乎被认为是 C++ 的良好替代品。问题是,Rust 和 C++ 之间没有清晰/干净/通用的接口方式,这使得想转到 Rust 的 C++ 程序员经历了突然的迁移。

Val

Val 给自己的目标定位是:

快速的定义

默认情况下是安全的

简单

可与 C++互操作

Val 以这些目标针对 C++、Rust 和 Swift 语言的受众。它的目标是实现 C++ 的性能,但要比 Rust 更简单的方式保证安全。在性能方面,Val 旨在减少编写安全软件所需的对象复制和内存分配的数量。在安全性方面,Val 中的所有结构都保证是安全的,除非用户明确要求额外的控制(将代码的一部分标记为不安全)。该语言的简单性主要来自于它对 Swift 的强烈影响,通常被认为是一种简单易用的语言。

许多编程语言不一定有一个贯穿其所有功能的核心思想,就像语言的催化剂一样;这会给人的印象是这些语言缺乏连贯性。这不能说是 Val 的问题。这门语言突出之处在于它有一个模型可以在程序上消除安全问题:它被称为 Mutable Value Semantics(变值语义)。但是,在这之前,一起先来探讨一下它所解决的主要问题。

C++ 本质上是不安全的

这一切都始于这样的观察:在存在突变的情况下,引用语义可能会导致不安全的程序。因为引用语义允许创建复杂的依赖关系图,所以突变不能保证在整个图中保留安全性。例如,如果一个函数对两个对象进行操作并改变了其中一个对象时,就不能保证另一个对象不会以完全意想不到的方式发生变化。这在单线程和多线程环境中都会产生问题。此外,如果不深入检查所有可能受到影响的代码,程序员们也没有系统的方法来验证突变的后果。这简直打破了结构化编程的核心思想。

以下面这个 C++ 代码片段为例:

voidappend_vec(vector&dest,constvector&src){for(autox:src)dest.push_back(x);}

忽略执行中的低效率,这段代码有一个严重的安全问题。而且,如果只看这段代码,就不容易发现这个问题;还必须看一下周围的代码。如果此函数的调用者提供相同的向量作为源参数和目标参数,那么就会导致未定义的行为。

为了确保像这样的函数有正确的语义,则需要一个独立性的保证:程序员们需要确保所交互的对象(至少写给其中一个对象)是不相同的。这在语言中无法得到适当的执行;因此,就处于不安全的领域。

这里的问题比它看起来要复杂得多。如果一个函数的两个参数都是引用(也就是说,我们没有在其中改变任何东西),那么就没有问题。只有当我们有 mutation.const 时,问题才会出现。

Swift 通编程客栈过使用 copy-on-write 技术来解决这个问题,但这可能会导致效率低下。

Rust 通过跟踪对象的生命周期来解决这个问题。这给程序员增加了负担,而且会给程序增加不必要的限制。

可变值语义

函数式编程语言通过禁止突变来避免上述问题。可以对多个对象有多个引用,因为没有人可以改变这些对象。这对许多程序员来说感觉很不自然,而且对无数的算法来说效率很低。

Val 以一种完全不同的方式解决了这个问题:它对引用增加了限制,并确保没有人可以读取一个对象,而其他人却可以改变它。

Val 认识到整体/部分关系的重要性。这些关系只能形成一棵树,而不是一个循环图。如果想修改这棵树上的一个对象,马上就能知道这个变化的影响,也就是所有其他可能受到这个突变影响的对象。它允许程序员们推理出哪些对象可以安全地作为读和写传入一个函数。

最后,按照这个逻辑,可以安全地添加引用来表示整体/部分关系。

在 Val 模型中,突变是不被禁止的,但是每次突变一个对象时,编译器可以计算出哪些对象可以安全地读取,哪些对象可以同时安全地写入。安全性可以通过构造来保证。

消除对象之间的任意引用并关注整体/部分关系是赋予 Val 价值语义的原因。但是,由于 Val 也允许值的突变,就可以把这个模型称为可变值语义学。

科学的方法

走到这一步,作者认为很重要的一个方面:Val 似乎遵循了一种科学的方法。可以看到,在上述内容简单地描述了一个确保安全的计算模型。这不仅仅是作者提出的关于语言安全的主张。他们有一个安全的证明,在语言的限制下。

该语言的主要创造者 Dimitri Racordon,实际上是一名博士后研究员。Dave Abrahams 似乎也是志同道合的人。Dave 和 Sean Parent 一起重新组建了 Adobe 的 STLabs。可以看出 Alex Stepanov(STL的创造者,也是STLabs的前成员)对 Dave 和 Sean 的研究导向的影响。

不能保证 Val 会像 C++ 那样成功,但可以发现解决 C++ 的一些基本问题的合理方法:清楚地定义问题,然后提出一个通用而优雅的解决方案。

使用临时引用

Val 简单地指出使用临时引用是不安全的。这使得人们不清楚如何实现需要引用的程序,而不是表达整体/部分关系。

例如,实现一个双链表需要不能被模拟为整体/部分关系的引用。目前还不清楚如何实现具有可变值语义的双链表。另一个例子,考虑一个应用程序中的共享缓存组件。根据定义,这样的组件需要被多方访问,并且需要允许突变。同样,我们也不清楚如何编程客栈在 Val 中实现这一点。

也许这些例子的简单答案是,用户必须将一些代码标记为不安全。这也许是可以的;作为语言的使用者,我们只是缺乏如何处理这些情况的经验。Val 必须为处理这些情况提供良好的指导。

C++ 的互操作性

在写这篇文章的时候,Val 还没有明确的公开计划如何来处理与 C++ 的互操作性,它只是宣布了它的意图。为了成为 C++ 的继任语言,Val 需要解决这个问题。而且,这个问题似乎并不容易。

首先要注意的是,根据它的描述,Val 的灵感主要来自 Swift。这意味着 Val 和 C++ 之间的差距不小(一边是 Carbon 和 Cpp2的差距,另一边是 C++ 的差距)。缩小这个差距可能需要很大的努力。

第二个障碍是可变值语义系统所带来的限制。C++ 本质上包含了大量的临时引用。这意味着,C++ 代码在 Val 中会被视为包含无数的不安全操作。在作者看来,几乎所有的 C++ 操作都应该在 Val 中被标记为不安全。这似乎增加了互操作性的差距。

请注意,作者并不是说 Val 不能与 C++ 适当地互操作。只是想表述实现这一点可能不是一个简单的努力。

Carbon

Carbon是在 CppNorth2022上面世,意欲成为 C++ 继任语言。Carbon 得到了谷歌的支持(据 Chandler 说,也得到了 Adobe 的支持)。此外,一个有趣的事实是,谷歌则在 CppCon2022上缺席;也许这是谷歌在考虑放弃 C++ 的一个标志。

在演讲中,Chandler 列举了目前 C++ 的问题。

大量的技术债务

C++ 优先考虑向后兼容,而不是语言演进;这也阻碍了对技术债务的修复

国际标准化组织的语言发展过程并没有针对 C++ 发展的实际需求进行优化。

Chandler 认为,解决这些问题的办法是开始考虑 C++ 的后继任语言。类似于 C++ 被创造为 C 的继承者,Swift 被创造为 ObjectiveC 的继承者,Kotlin 被创造为 Java 的继承者,则需要找到 C++ 的继承语言。

为了创建一个 C++ 的继任语言,需要在现有的生态系统中构建,提供双向的互操作性,并确保有工具来帮助迁移和学习。而这些实际上就是新宣布的 Carbon 语言的目标。

与 C++ 相比,Carbon 似乎没有一个标志性的特征。它就像是一个 C++ 的清理项目。在演讲中,Chandler 展示了更简洁的语法、更干净的指针语义、更好的包装、更好的公共/私有成员的默认值、显式参数、继承清理、API 扩展点和 C++0x 风格的泛型。所有这些功能都以这样或那样的方式存在于其他编程语言中。

Carbon 可以被看作是具有更好的默认值的 C++,这是件好事。人们会看到一种熟悉的语言更好/更简单。Carbon 的学习曲线可以很平滑,从 C++ 到 Carbon 的过渡不需要跳过太多的障碍。

但是,另一方面,这与 D 有什么不同?D 也试图通过学习 C++ 的错误和清理其粗糙的边缘而成为 C++ 的继承者。是什么让 Carbon 语言具有内部一致性,而不是让它感觉像一群不相关的功能?

如果从进化的角度来看,即使今天所有的默认值都很有意义,又有什么能保证它们在接下来的几十年里都有意义?怎样才能防止 Carbon 积累技术债务?这个问题的部分答案是,正如 Chandler 提到的,使用工具来协助迁移。但是,都看到了从 python2迁移到 Python3是多么的痛苦;可能不是每个人都相信工具可以帮助解决未来的问题。

这些问题都是 Carbon 团队需要回答的问题。作者表示并不是想说这些问题很难回答,但它们需要被回答。

与 C++ 的互操作性是困难的

即使 Carbon 可以成为一个具有更好的默认值的 C++,与 C++ 的互操作性也不一定容易。下面是 Sean Baxter 提出的一些观点:

在 Carbon 中没有功能过载

在 Carbon 中没有异常处理

在 Carbon 中没有多重继承,但人们仍然可以在 C++ 中使用它

与 C++ 不同,Carbon 不处理原始指针

Carbon 没有构造函数

从这些方面来看,可以很容易地看出,与 C++ 的互操作性将是一个复杂的问题。最有可能的是,即使互操作性问题能够完全解决,对于大型软件来说,从 C++ 迁移到 Carbon 也不会是一个简单的过渡。

文化的兴衰

谷歌是一家坚信文化是软件开发的驱动力的公司。Chandler 在他的主题演讲中也用 Peter Drucker 的一句话表达了这一点。

文化把战略当作早餐,把技术当作午餐,把产品当作晚餐,不久也会把其他一切都吃掉。

虽然企业文化确实是必不可少的,但仅仅引用 Peter Drucker 的话并不是成功的秘诀。主要问题是很难衡量文化及其影响。Chandler 列出了关于 Carbon 文化的几个要点(包容性、社区友好等)。虽然所有这些观点都是好的,但它们不足以定义文化,也不足以让文化在 Carbon 项目中发挥作用。例如,Chandler 没有提到卓越的技术、毅力、尝试新事物的勇气,或者如何优先考虑不同的(与文化有关的)目标。

Lucian Radu Teodorescu 表示在他以前工作的一家公司,有一句口头禅是 "我们从不让项目失败"。谷歌和 Carbon 项目的文化中是否有一个类似的目标?人们似乎把谷歌看作是一家尝试许多产品并在一段时间后关闭它们的公司。例如,如下图,Victor Zverovich 的一条推特,他利用这种看法开了一个关于 Carbon 的玩笑。考虑到 Chandler 还宣布谷歌有一个不同的团队有同样的目标,但他们从 Rus t开始,转向 C++ 后,这种思路可能并不太牵强。

Lucian Radu Teodorescu 表示文化是好的,Chandler 提出的观点也是好的。但是,想要说服一名工程师则需要可验证的论据。

治理模式

关于 Carbon 公告的一个有趣之处是治理模式。Carbon 项目的目标是实现一种没有任何公司能决定语言未来的治理。每个人都可以通过创建拉动请求来参与语言的发展,但越是重要的功能,就越需要分析/论证。

对于没有达成共识的重要功能,有一个由三名成员(Chandler Carruth, Kate Gregory, Richard Smith)组成的指导委员会,负责达成决定。他们没有机会对设计做出贡献;他们只需要权衡提交给他们的论据并做出选择。

有趣的是,这个模型试图强调一个民主的过程,这在某种程度上类似于 ISO 的目标。这只是对参与各方的不同划分,当陷入僵局时会有更明确的规则来做什么。如果从事 C++ 标准化工作的人也从事 Carbon 的工作,那么 Carbon 的过程是否会明显好转就不清楚了。

虽然民主方法是目前最好的治理方式,但我们最近看到了一系列重大的政治失败,这些失败可能与民主的负面影响直接相关。值得一提的是,在古希腊,民主被认为是一种糟糕的治理方式。

Cpp2

CppFront 是 Herb Sutter 在 CppCon2022的闭幕主题演讲中宣布的一个项目。它是一个转码器,可以将 "更好的 C++",即 Cpp2,转换为旧的 C++。虽然 CppFront / Cpp2是今年正式宣布的,但 Herb 已经在这个项目上工作了大约7年;每年,Herb 都会展示 Cpp2的一小部分。

Herb 希望改进 C++(即10倍),而不是进行增量式的改变(即10%)。他希望使 C++ 实现30年前 Stroustrup 设想的那个更简单、更干净的语言的老目标。有趣的是,它采用了 Stroustrup 想改进 C 语言时相同的方法:开始一种新的语言并将代码翻译成以前的语言。因此,CppFront 是一个小型转译器,它接收 Cpp2代码(Herb的新语言)并输出常规的 C++ 代码。

Herb 还设定了一些指标,我们可以用这些指标来评估这个实验是否成功。更安全50倍(也就是减少98%的CVE),更简单10倍(减少90%的教学指导)。预先定义指标是一个很好的策略,能够评估实验的成功;我非常喜欢这个想法。

向后兼容性和互操作性

通过放弃向后兼容性,Cpp2可以比 C++ 更简单。这最终允许该语言删除那些被认为是有害的功能,并重新审视一些被证明是次优的设计选择。通过放弃向后兼容性,Cpp2最终可以解决 C++ 中几十年积累的技术债务。

说实话,在 C++ 中优先考虑向后兼容性优先于语言发展并不是一个可靠的例子。每次我们为语言添加一个主要的功能(例如,概念、程序、模块等)时,我们实际上是在语言中创造一个新的时代。新的代码可以与旧的代码互动,但旧代码不能简单地依赖用新特性编写的新代码。尽管 C++ 标准没有正式提及语言时代,但是在语言中有一个底层的时代系统,由新特性的发布所决定。

可以将 Cpp2看作是 C++ 的一个主要新特性。在互操作性和工具方面,事情要复杂一些,但本质是一样的。在同一个应用程序中,旧式 C++ 不能与 Cpp2共存,这在技术上没有充分的理由。

按照设计,Cpp2在语义上与 C++ 接近;这使得互操作性更容易。另一方面,这也会阻止 Cpp2拥有与 C++ 完全不同的特性。例如,Cpp2就很难使用 C++0x 式的泛型。

解决安全问题

安全性提高50倍的目标听起来令人印象深刻。如果 Cpp2能够实现这个目标,我相信大多数语言的用户都会感到高兴。

让我们从这个数字的角度来全面了解其影响。这意味着98% 的 C++ 应用程序如果被翻译成 Cpp2就不会再崩溃了(假设崩溃只由不安全的应用程序产生)。或者说,98% 的 C++ 网络应用不会有漏洞(如果没有其他非C++的漏洞)。这将大幅减少崩溃和安全漏洞。

这似乎好得令人难以置信。实际上,如果我们更详细地分析,这些数字似乎太高了。

首先,如果讨论安全问题,需要清楚地知道什么是安全。安全性包括:

类型安全

边界安全

生命周期安全

初始化安全

对象访问安全

线程安全

算术安全

Herb 在他的主题演讲中提到了上述的前4个项目。然而,这些安全项目的所有方面并没有得到解决。作为一个主要的例子,在存在原始 pointer 时不能保证生命周期安全;仅仅检查 pointer 是远远不够的。也没有任何一个功能来检测 pointer .null 的使用后删除情况。

Cpp2,正如 CppCon 主题演讲中所描述的,无法检测到这段代码的问题:

vec.push_back(vec.front());

Herb 定义了他的安全指标,包括前四个安全组件;故意忽略其他类型的安全似乎很奇怪。尤其是如果被忽略的安全成分很重要的话。

对象访问安全是指受对象访问模式影响的安全规则。一般来说,这一类的不安全代码可以转化为类型安全、边界安全或生命周期安全。无效迭代器的规则是这个类别中很好的例子。

线程安全是 C++ 的一个大问题,Herb 完全没有提到。在她2021年的 C++ Now 演讲中,Anastasia Kazakova 展示了数据,显示在 C++ 社区中,并发安全占用户 setback 的27%。相比之下,边界安全问题只占16%,使用后删除问题占用户 setback 的15%。并发安全是安全性方面最大的痛点,而这一点没有在 Herb 的列表中得到体现。

Herb 在他的幻灯片上表示,Cpp2获得了 "结构安全"。这不可能是真的。结构安全性应该是指语言的构建方式总是能够导致安全的构造(除非程序员真的忽略了类型系统并将安全性掌握在自己手中)——类似于 Val 或 Rust 的构建方式。但 Cpp2并没有这样做;它只是对一些常见的不安全行为的来源增加了更多的安全检查。如果你看过 Dave Abrahams 和 Dimitri Racordon 的演讲,以及 Sean Parent 的演讲,这一点应该马上就能看出来。

这让我相信,在安全性上提高50倍是不可能实现的目标。

关于目标的可衡量性

理论上,在任何时候,我们都可以根据这些指标来衡量进展,可以评估这个实验是否成功或能否成功。

让我们从第二个指标开始:简单10倍,就像我们需要在 C++ 书籍中教授的指导中衡量的那样。在这个实验被证明是成功之前,人们不太可能写关于 Cpp2的书,但可以想象这样一本书的内容是什么。可以确定哪些是我们需要教授的关于 Cpp2的一系列概念,并且我们可以将其与我们目前正在教授的关于 C++ 的内容清单进行比较。因此,我们可以衡量这个指标。

这并不像人们想象的那样简单。C++ 有很长的历史;因此我们知道它的陷阱,人们在 C++ 书籍中记录了这些陷阱。但是,Cpp2没有这么丰富的历史,所以,人们总是怀疑我们不知道它的所有陷阱。然而,Cpp2与 C++ 如此接近,我真诚地相信可以排除这些顾虑,得到一个关于简单性的准确测量。

但是,我不能对第二个指标说同样的话。我们如何衡量 CVE 和安全漏洞的百分比?首先需要有一个足够大的 Cpp2程序的语料库,由大量的程序员和公司编写。然而,为了实现这一点,Cpp2需要被认为是一种成功——一种循环的依赖。因此,在 Herb 的演讲中定义的安全度量并不是衡量实验成功的指标。

在主流语言使用一段时间后,使用这个指标来评估语言是有意义的,但不能判断实验的成功。

有还是没有 monads

在主题演讲的1小时33分(以YouTube视频为参考)中,Herb Sutter 骄傲地说:"我没有说过一次 monads 这个词"。然后他继续解释说,Cpp2是关于我们目前在 C++ 中使用的语言理念;而不是来自其他语言的奇怪的外来术语。

虽然这句话可能会吸引 C++ 社区中以自我为中心的部分人,但我认为它对社区的伤害要大于帮助。

首先,C++ 到处都在使用 monads。新的 C+ +23特性可能是使用 monads 的一个已知例子,但 C++ 从根本上说是围绕着 monads 建立的。当我们调用可能抛出异常的函数时,我们隐含地使用了 monads 。也就是说,几乎到处都是。

其次,它在语言用户中创造了一种自给自足的感觉。这样的声明不是向社区开放新的想法,而是传递了一个信息:C++ 不需要向其他语言学习。但是,该语言拥有的大量技术债务,以及三种继任语言的出现,证明了这一点。

比较

下面的表中试图提供三种语言之间的比较;C++ 也是一个基准。

今年宣布的3种 C++ 继任语言都被认为是试验品。并没有很好的指标表明它们是否真的能成功地吸引足够数量的编码人员/代码库,在生产环境中使用它们。

看看 github 上的星星数量,我们看到 Carbon 是这群人中的佼佼者,与其他两个相比,有很大的差距。Carbon 已经成功地在社区内进行了更多的炒作;对包容性的关注和治理模式可能对此有贡献。

这三种语言也在它们与 C++ 的相似程度方面有所区别。正如所料,Cpp2是三种语言中最接近 C++ 的。Carbon 似乎离 C++ 更远,但使用了与 C++ 相同的基本构件块;在 Carbon 中,用户的思考方式与他们在 C++ 中的方式基本相同。由于可变值语义,Val 程序员在编程时需要有一个稍微不同的思维模型,这可能使 Val 成为一种离 C++ 更远的语言。另一方面,如果我们看一下 Val 的快速定义口号,特别是在默认安全和简单的背景下,该语言的原则似乎可以很好地转化为 C++ 的受众。

在这三种新的语言中,Val 是唯一一种能够支持其安全承诺的语言js。其他两种语言试图改变一些最不安全的操作的默认值;目前还不清楚这是否有很大的区别。

就语言特性的一致性而言,这三种语言似乎都比 C++ 更好。但在语言的连贯性方面,改变默认值并不能让你走得那么远。在这里,与 Carbon 和 Cpp2相比,Val 的方法似乎更有连贯性。

最后,我认为在我们这样的工程学科中很重要的一点是:有多少语言设计决定是由某种科学支持的?在这方面,Val 似乎是唯一有一些理论基础的。这可以为其用户提供真正的保证。

放弃还为时过早

Herb 在他的主题演讲中呼吁不要放弃 C++。这是一个来自 C++ 的领导层的证明,人们正在考虑放弃 C++。在一年内出现了三种 C++ 的继任语言,正好证实了这一想法。C++ 是否开始默默无闻还不得而知,但我们大概可以认为,今年是 C++ 未来的一个拐点。

目前,要判断这些实验是否会成功还为时过早。所有的语言都有优点,也都有弱点。如果其中至少有一种成功了,我相信我们会推进编程语言的实践;这可能意味着在整个软件行业的积极影响。

在这次比较中,尽可能地保持了客观,但我确实有自己的偏见。我希望这些偏见不会妨碍在比较这些语言时做得很好。

说到偏见,我确实需要承认:在业余时间,我已经开始与 Val 团队合作,推动语言的核心理念。对我来说,这些想法,如果能在实践中得到完善和成功采用,比特定的语言更重要。如果 Val 作为一种编程语言消亡了,但它的所有想法都被纳入了 C++,那么我会很高兴。

自从我看到 Dave 和 Dimitri 在 C++ Now 上的演讲录音后,我就被可变值语义的思想所吸引。在2022年的 CppCon 上,我见到了 Dave 和 Dimitri,并和他们一起探讨了一些细节,使我相信 Val 背后的想法是深刻的,经过深思熟虑的,值得密切关注。

看一下流行的数字,Val 的表现并不那么好。可能其中一个原因是,好的想法需要时间来沉淀。套用一个著名的演讲,我选择为 Val 工作,不是因为它容易,而是因为它困难;因为 Val 的目标是值得的。

x 广告
最近更新

焦点消息!那些意欲取代 C++ 的编程语言,成功了吗?

2023-01-23

霍山县气象局发布大雾黄色预警【III级/较重】【2023-01-22】

2023-01-22

过年 | 古都灯会人气旺

2023-01-22

超高峰行车间隔6分钟 洛阳地铁春节假期将提供更多贴心服务

2023-01-22

小米12T Pro曝光 雷军都发话了 当前时讯

2023-01-21

新春走基层 | 山东森林消防员的“三”字经

2023-01-21

尼康单反相机D850新固件1.30发布_世界焦点

2023-01-21

当前速读:2023年要抓好3.5万个易地扶贫搬迁集中安置点

2023-01-21

当前报道:市领导走访慰问春节坚守岗位的干部职工

2023-01-20

每日讯息!2.9亿美元的特工动作大片,等不及了

2023-01-20

全球微头条丨外媒:美中情局局长定期前往乌克兰会见乌情报官员交换情报

2023-01-20

每日视讯:内蒙一机董秘回复:上海证券交易所上市规则第六章中对应发布业绩预告和业绩快报的情形做出了规定

2023-01-20

内插法计算公式_内插法_快报

2023-01-20

浦银创业板ETF: 浦银安盛创业板交易型开放式指数证券投资基金2022年第4季度报告-全球消息

2023-01-19

2022中国经济年报发布 经济总量再上新台阶-天天视点

2023-01-19

韦尔股份1月19日盘中涨幅达5%

2023-01-19

大寒配冰瀑!这处绝美冰瀑实际是个改造项目

2023-01-19

逸仙电商(YSG.US)收盘报1.55美元/股,跌9.36%_世界即时

2023-01-19

六级考试满分多少_六级考试技巧_环球热消息

2023-01-18

23日照银行CD004今日发布发行公告

2023-01-18

山东费县女医生举报前夫“投毒”案开庭,受害人:判决结果已不能安慰我未来的人生

2023-01-18

四川2022经济年报丨2022年我省规上工业增加值比上年增长3.8%

2023-01-18

世界关注:西藏造老银元价格(2023年01月17日)

2023-01-18

春节临近炒货热销,徽派炒货搭上新电商“快车”驶向全国市场 世界资讯

2023-01-17

“芯动北仑”摩天轮正式开业,宁波再添“新地标”!|报资讯

2023-01-17

A型血最突出的几大特征

2023-01-17

意大利头号逃犯在逃30年后被捕:看病时被抓 14岁起开始犯罪_每日报道

2023-01-17

洗衣时口袋里别留硬币杂物|今日热讯

2023-01-17

隆基机械: 股票交易异常波动公告

2023-01-16

恒久科技01月16日主力资金大幅流入

2023-01-16

青少年模式如何“好用爱用”-看点

2023-01-16

世界简讯:临沂未成年人刑事案件委托律师怎么收费

2023-01-16

注意!银龙股份将于2月10日召开股东大会:世界热文

2023-01-15

高考坚持句子(共30句)-当前资讯

2023-01-14

冰壶与赛道,冬奥同款!砰砰砰,“冰立方”冰壶场今天迎客_世界今日报

2023-01-14

干货 | 涉疫数据的安全应用方案 每日简讯

2023-01-14

兰石重装:副总经理张俭辞职

2023-01-13

23中兴通讯SCP005票面利率为2.2300%-每日动态

2023-01-13

种植牙万元时代即将结束,我国口腔企业连续9年新增长

2023-01-13

环球快报:民生银行:股东泛海集团所持部分股份被轮候冻结

2023-01-13

2023年军队文职网上报名具体流程是什么?

2023-01-12

快讯:爱奇艺限制电视投屏清晰度?4K没了只有480P,用户吐槽无法接受!

2023-01-12

全球新资讯:板块异动 | 工信部表态稳住汽车等大宗消费 汽车整车板块异动拉升

2023-01-12

2022年湖北省全社会用电量2647.8亿千瓦时 同比增长7.1%

2023-01-12

闫学晶儿媳即将生产!晒大肚照四肢纤细美似少女,丈夫高大长像妈

2023-01-12

港股1月11日地产股午盘:大唐地产涨10.00%位居首位 每日热闻

2023-01-11

没想到,2023刚开年,44岁刘涛再以这样的方式,败光观众缘

2023-01-11

1月12日江西地区氢氟酸市场价格暂稳 天天新动态

2023-01-11

《三十而已》:原来二十岁时惊天动地的事,在三十岁看来如风一般|今日快讯

2023-01-11

世界微资讯!描述女孩性格特点句子(精选226句)

2023-01-10

环球简讯:心情日文句子(精选258句)

2023-01-10

世界今日报丨中铁特货(001213)1月10日主力资金净卖出251.61万元

2023-01-10

*ST必康(002411)1月9日主力资金净卖出1036.07万元

2023-01-10

世界速讯:虚开发票罪的量刑标准是怎样的呢?

2023-01-10

环球即时看!适用简易程序处理交通事故的有关规定是什么

2023-01-10

有钱花借款逾期还不起会上征信吗?

2023-01-10

【天天聚看点】云闪贷网贷逾期8个月不还征信有什么影响

2023-01-10

三场荆楚特色“村晚”入选全国小年接力展播活动,首场在孝昌启动|全球速看

2023-01-09

焦点简讯:2胜11负,西部第一名到西部第八名!你终究不在库里哈登的位置上,承认事实

2023-01-09

再快一点?动态内容如何加速

2023-01-09

【新机】GTNeo5双版本配置公开 1.5K直屏/骁龙8+ 3.0GHz版

2023-01-09

借呗逾期41年延迟还款会上征信吗:环球百事通

2023-01-09

【新视野】深港口岸有序恢复正常通关

2023-01-09

香港著名音乐家顾嘉辉离世:全球头条

2023-01-07

2022年度江苏省新沂市市场监管局食品安全监督抽检信息公示(第八期)-重点聚焦

2023-01-06

广州元旦楼市热度回暖 网签量同比上涨近四成-环球热消息

2023-01-06

尚太科技:拟兴建年产30万吨锂离子电池负极材料一体化生产基地 方案仍处于论证阶段_今日热搜

2023-01-06

环球即时:江苏水痘疫苗免费政策

2023-01-06

全球短讯!万安科技: 关于实际控制人股份减持计划期限届满的公告

2023-01-06

春运1月7日开启 湖南高速春运出行提醒来了-环球微资讯

2023-01-05

千年国乐 创造新“声”

2023-01-05

多家港股IPO企业未行使超额配股权 后市有望随港股回暖获新发展-当前独家

2023-01-05

广西北部湾港年度集装箱吞吐量迈入“700万标箱时代”-天天新消息

2023-01-04

福立旺:截至2022年12月30日,公司股东户数为7018户|环球即时看

2023-01-04

普尔高能再轰40+克莱31分勇士逆转开拓者4连胜:快播

2023-01-04

环球热议:航天电器:1月3日融券卖出金额330.07万元,占当日流出金额的2.18%

2023-01-04

欠了微博借钱8年没还法院会强制执行吗

2023-01-04

交通运输部部长李小鹏:着力扩大铁路有效投资 优化铁路基础设施布局|焦点短讯

2023-01-03

茶油擦脸的正确方法 如何正确拿茶油擦脸呢|世界头条

2023-01-03

每日速读!国家邮政局:元旦假期全国揽投快递包裹超21.3亿件

2023-01-03

舒康能源app:风口成为共识,抢碳中和投资:世界微资讯

2023-01-03

【和讯期货早报】海通期货-原油-1月3日

2023-01-03

深桑达A:子公司中国电子云获国开基金增资4亿元

2023-01-03

上海:奥密克戎BQ.1和XBB毒株尚未在社会面上造成本土传播 报资讯

2023-01-02

【机构调研记录】天治基金调研高测股份、华锐精密等5只个股(附名单)

2023-01-02

这是什么英语怎么说 如何英语表达这是什么:最新消息

2023-01-01

融e贷网贷逾期还不了会上征信吗 当前资讯

2023-01-01

柠檬加盐水可以治疗嗓子痛吗_快播报

2022-12-31

佛山高明区更合镇便民核酸采样点(地址+时间+电话)

2022-12-30

廊坊11岁小孩抚养费怎么算

2022-12-30

祁连山董秘回复:截止11月18日,公司股东人数是63643

2022-12-30

中航证券:给予TCL中环买入评级,目标价位71.9元 全球视点

2022-12-30

全球快消息!我阳了...

2022-12-30

今日热闻!METROPOLIS CAP(08621.HK)订立保理协议

2022-12-29

全球新动态:冬天保暖小鞋,AJ11樱桃来袭

2022-12-29

2023珠海跨年飘雪活动几点开始

2022-12-29

小期贷逾期10天会上征信吗

2022-12-29

碳元科技:目前涟源德盛四季新能源科技有限公司已受让完成徐世中先生协议转让的12,000,000股公司股份,占公司总股本的5.74%

2022-12-29

北交所今年实现一倍扩容 明年发行上市进一步常态化

2022-12-29

全球新资讯:全国碳市场释放减排新动能

2022-12-28

世界视点!生态环境部命名云南省临沧市为第六批生态文明建设示范区

2022-12-28

今日热议:支付宝南粤生活新冠抗原检测盒预约购买入口

2022-12-28

滋阴的食物有哪些?:最新快讯

2022-12-28

镇雄馨中云阁学校教师待遇怎么样?:每日热讯

2022-12-27

浙商证券:继续看好业绩确定性强的白酒板块

2022-12-27

华菱钢铁董秘回复:为加强科研技术支持,提升自主研发创新能力 热点在线

2022-12-27

天天速讯:新亚制程: 新亚制程2022年第二次临时股东大会法律意见书

2022-12-26

全球今头条!星网宇达董秘回复:公司定增目前在正常推进中

2022-12-26

商务预报:12月12日至18日蔬菜零售价格略有上涨-环球热门

2022-12-26

天天热文:楼继伟展望中国财政政策:减税降费仍应作为主要措施

2022-12-25

俄国防部:美在乌生物军事项目涉美情报机构等人员-世界速看料

2022-12-25

【抗疫中我们众志成城㉘】力促客货运输市场稳步回升|时讯

2022-12-24

东阳光: 东阳光独立董事对相关议案的独立意见

2022-12-23

【世界报资讯】涨停雷达:互联网金融个股异动 生意宝触及涨停

2022-12-23

【和讯期货早报】大有期货-生猪-12月23日

2022-12-23

环球看点!11月销量速看,大众不敌比亚迪,宋月销超6万,理想L9比宝马还火

2022-12-22

异动快报:金财互联(002530)12月22日14点9分触及跌停板

2022-12-22

重点聚焦!联影医疗(688271)12月21日主力资金净买入537.49万元

2022-12-22

《姜子牙》首映口碑分化,观众反而成了姜太公钓的那条鱼?:环球快播报

2022-12-21

A股异动 | 海利尔涨近7% 山东海利尔年产3000吨丙硫菌唑原药项目试生产

2022-12-21

环球头条:50亿元人民币央行票据在港发行

2022-12-21

全球观速讯丨NI CompactDAQ 独立式系统简介

2022-12-20

叙利亚首都大马士革周边地区遭导弹袭击

2022-12-20

波卡周报|31 项公投在 OpenGov 系统上提出,Bifrost 与 Astar & Shiden 开通 HRMP 通道!

2022-12-19

石基信息董秘回复:防疫政策调整之后,随着疫情恢复和大消费行业的回暖

2022-12-19

使用 IdentityServer 保护 Vue 前端

2022-12-19

川汇区:规范疫情防控期间市场价格经营秩序

2022-12-19

鹤壁5G产业园被认定为“中国侨联新侨创新创业基地”:今日看点

2022-12-18

世界即时:最高200架波音787!美联航签下美国航司史上最大宽体机订单

2022-12-17

全球速讯:孩子七岁抚养费怎么算

2022-12-17

加强巡查 严格执法 湖北多措并举确保防疫药品价格稳定

2022-12-16

国泰君安2023年钢铁业策略:需求预期从底部逐步抬升 静待困境反转

2022-12-16

烟台 今日金价多少一克|世界时讯

2022-12-15

只做富人的生意?香奈儿爱马仕等奢侈品牌开始抛弃大众消费者

2022-12-15

遥望科技董秘回复:公司会积极考虑的,可以继续留意公司直播间的商品情况

2022-12-15

美诺华: 宁波美诺华药业股份有限公司监事会关于激励对象名单出具的书面核查意见-焦点信息

2022-12-14

孟津区朝阳镇三彩文创产品实现频频“破圈”-快播报

2022-12-14

观速讯丨北京发布研考提醒:未返京考生尽早返京备考,在京考生非必要不外出

2022-12-14

岭南股份(002717):股东减持计划期限届满-视点

2022-12-13

ST热电:我们努力在这个寒冬为大家带来温暖,如有供暖问题请拨打83602222_每日热点

2022-12-13

天天快讯:鼎通科技: 首次公开发行战略配售限售股上市流通公告

2022-12-12

【世界热闻】天津联通林亭口综合网格智家工程师团队:我的百倍用心,愿您十分满意!

2022-12-12

中国移动联合合作伙伴启动算力网络科学装置-热点

2022-12-11

最高法:加强人工智能应用顶层设计 加强司法数据中台和智慧法院大脑建设

2022-12-09

冠豪高新董秘回复:公司印刷板块业务与国药集团、丽珠制药等大型医药公司均有合作,产品涵盖感冒类药品包装盒 焦点报道

2022-12-08

美股异动 | 名创优品(MNSO.US)涨近6% 此前获瑞银首予“买入”评级 天天时讯

2022-12-06

秦皇岛市总探索新就业形态劳动者建会入会新路径

2022-03-18

国家卫健委:家庭医生签约服务“最后一公里”有望打通

2022-03-18

截至2021年底 全国乘用车产能利用率仅为52.47%

2022-03-18

教培机构如何合理处理与员工的劳动关系?

2022-03-18

夫妻二人用工业硫磺熏制竹笋 查获20余吨

2022-03-18

虚假宣传等老问题占比较大 车主权益如何保障?

2022-03-18

有人不解,有人转型……多地发布建筑业清退令

2022-03-18

避坑越来越难?安心消费呼唤监管亮出科技之剑

2022-03-18

政策春风“吹暖”市场预期 A股港股双双走强

2022-03-18

用人单位用“盲盒岗位”招聘引发公众热议

2022-03-18

金稳委重磅发声 共同维护资本市场稳定发展

2022-03-18

三部门: 加快推动城市货运配送体系 绿色低碳发展

2022-03-18

露天滑雪场运动员怎么上厕所?马桶藏着黑科技

2022-02-15

安徽16岁弟弟捐献造血干细胞救24岁哥哥

2022-02-15

广州一大型商场因疫情防控需求暂时封闭

2022-02-15

江苏苏州一地调整为中风险地区

2022-02-15

辽宁调派移动方舱检测车10台、496人支援葫芦岛疫情防控

2022-02-15

【新春走基层】田坎上来了乡村振兴工作队

2022-02-15

七旬养猪老汉系外省命案逃犯 持刀杀人潜逃13年后宿迁落网

2022-02-15

驻哈中企员工的“别样团圆”

2022-02-15

1月中国各种自然灾害造成42.2万人次受灾

2022-02-15

中国空间站、首次火星探测等入选2021年度十大科普事件

2022-02-15

广西百色疫情社区传播链基本阻断 社会面基本实现清零

2022-02-15

上海:禁止企业采用“最严算法”考核、遏制“以罚代管”

2022-02-15

上班时间向招聘网站投简历被裁 媒体:职场数字化管理别

2022-02-15

甘肃高校数百名大学生“云支教” “打卡”互动零距离育人

2022-02-15

广西百色:社会面基本清零 健康码转码工作有序开展

2022-02-15

广西贺州“碰瓷女王”重操旧业 再度入狱

2022-02-15

外卖小哥热汤圆吃出幸福感 生活不易愿被社会温柔以待

2022-02-15

冬奥邂逅元宵:外籍主播侨乡浙江文成“闹元宵”

2022-02-15

青岛检察机关开展学生安全保护专项监督活动

2022-02-15

等待两年,只为8分钟的相见

2022-02-15

运用数字技术打造劳模工匠服务管理新模式

2022-02-15

预制菜“大热”元宵餐桌 中国 “Z世代”成掌勺主力

2022-02-15

辽宁推进法院审级职能定位改革

2022-02-15

杭州西湖景区旅游法庭揭牌

2022-02-15

拓展乡村振兴的数字蓝海

2022-02-15

山东泰安:提升执法司法质效 让执法监督长出“牙齿”

2022-02-15

农机助力 种地省心

2022-02-15

监狱人民警察用言行诠释忠诚

2022-02-15

扎根中国大地 办出中国特色 争创世界一流

2022-02-15

守护海陀之巅 走近国内第一支专业高山救援队

2022-02-15

内蒙古满洲里:2月1日以来到过满洲里人员全部落实管控措施

2022-02-15

“0蔗糖”就是无糖、不渴不用喝水等谣言入选2021年度十大

2022-02-15

广西:监督推动乡村振兴政策项目资金落地见效

2022-02-15

把算法开关交给消费者 以保障消费者权益

2022-02-15

二七厂蝶变:科技自立自强

2022-02-15

从货担郎到日售数千斤 兰州手艺人40余载“滚”元宵留年

2022-02-15

大陆学生在台度春节:不一样的年味与团圆

2022-02-15

广东惠州全市全部封控管控解除

2022-02-15

为人民健康提供可靠保障

2022-02-15

青海藏族女孩小拉毛春节“重生记”

2022-02-15

让群众遇事不烦办事不难

2022-02-15

河南晒出2021年交通“成绩单”:村村通、户户通 农村公

2022-02-15