查看原文
其他

谷歌新语言Carbon 承担 C++ 技术债务

21CTO 2023-01-28

新的、有前途的编程语言不断涌现,有些已经做得相当成功,很多开发者已经将 Rust 和 Go 作为流行新语言的成功典范。

尽管新编程语言令人激动不已,但当涉及到项目开发,最常用的还是 Java、C、C++ 和 Python 时,仍然是这些久经考验的、真正的老语言在使用调查中名列前茅。

但是,那些流行的老语言存在一些缺陷。

2022 年 7 月,在 CppNorth的一次演讲中,谷歌首席软件工程师 Chandler Carruth 宣布了 Carbon 正式研发,该语言目标是作为 C++ 的后续语言。拿谷歌的说法,虽然 C++ 是“性能关键型软件的主要编程语言”,但在数十年积累的技术债务和具有挑战性的演变过程之后,很难做出改进。 

除了自己团队数十年的技术债外,谷歌还在 Carbon GitHub 页面中指出,在创建 C++ 时,C++还继承了 C 的一些问题,例如文本预处理与包含等。 

“当时这对 C++ 的成功至关重要,因为它让 C++ 能够即时、高质量地访问大型 C 生态系统。然而随着时间的推移,这导致了大量的技术债务,从整数提升规则到具有“最令人头疼的解析”的复杂语法。 

Carruth 演讲中解释说,承担这项技术债务在当时是一个非常好的决定,可能也是“正确的选择”。它可以让 C++ 的生态系统自举,这对它的成功至关重要。

Carruth 解释说,增加技术债务的另一件事是 C++ 对向后兼容性的承诺。向后兼容性也使得修复已经存在的技术债务变得困难或不可能。 

“C++ 已经存在了 近50 年(如果我们算上与 C 语言的兼容性),因此这个语言会产生很多‘浪费’,特别是因为我们希望向后兼容,”Bartlomiej Filipek 这样说,他是一名 C++ 程序员、作家和博主。 

Rust 是 C++ 的继承者,而不是替代品

谷歌认为避免继承 C 或 C++ 问题的最佳选择是创建一种使用现代语言基础的新编程语言,例如现代泛型系统、模块化代码组织以及一致且简单的语法。 

谷歌也正在遵循 Carbon 的后继语言方法:它应该建立在现有的生态系统之上,提供双向互操作性,优化学习曲线和采用路径,并提供工具辅助迁移支持。 

其他后继型编程语言,如 Kotlin(Java 的继任者)和 TypeScript(JavaScript 的继任者)在填补各自编程语言生态系统的空白方面就非常成功。 

SonarSource 的开发者 Phil Nash 这样解释说,Rust 是一种在性能上与 C++ 竞争的流行语言,但它是替代品,而不是继任者,这表示Rust是一种独立的语言。

“Rust 是一种很棒的编程语言,如果它真的解决了你的问题,如果它是你的好工具,那么请使用它,”Carruth 说。“Rust 团队和 Rust 社区所做的一切都给我留下了深刻的印象。但是,如果你有一个非常大的 C++ 生态系统并且有非常深的依赖关系,那么将其迁移到 Rust 将是非常困难的。”

Carbon 目标是与 C++ 代码无缝互操作。根据 Filipek 的说法,这对 C++ 开发人员是有很大帮助的,这意味着他们可以立即使用 Carbon,无需从头开始。  

“你可以拥有一个包含大量 C++ 代码的项目,也许你已经维护了 20 或 30 年,你可以开始在它旁边引入 Carbon 代码,它们可以无缝地相互调用。因此,您不必将所有东西都投入到一些新的生态系统中。”

根据该项目在 GitHub 上所提到的,对于 C++ 的后继语言有几个要求。其中包括匹配 C++ 的性能、与 C++ 的双向互操作性、温和的学习曲线、可比较的表达能力和可扩展的迁移。 

由于 Carbon 是作为一种后继语言开发的,如果它成功了也并不意味着 C++ 的消亡。“这可能意味着我们可以构建更好、更安全、更易于开发的系统,这些系统依赖或重用现有 (C++) 部分。与往常一样,双方:C++ 和 Carbon,将相互学习并不断改进,”Filipek 这样补充道。

Carbon 在 C++ 生态系统中会是什么样子?

Carbon在夏天才刚刚宣布,仍处于早期阶段,因此很难预测它会取得多大的成功。它目前在 GitHub 页面上被列为“实验性”,目前还没有现成的编译器或工具链。 

在撰写本文章时,谷歌已经新决定了该项目的一些核心方面:

其中包括项目的战略;Carbon 将具有开源的项目结构、治理模型和演进过程;针对语言关键方面的设计,例如泛型、类类型、继承、运算符重载、词法和句法结构以及代码组织和模块化结构;和一个原型解释器演示。 

“虽然这听起来像是一个好主意,有一种感觉这是谷歌的事情,而这只是谷歌试图在世界上推动他们对事物的看法。公平地说,这是有道理的。” 

作者:场长


相关阅读:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存