机器之心报道
编辑:杜伟、陈萍
目 前,Carbon 编程语言正处于实验阶段。
在编程语言的世界中,C++ 的地位举足轻重。在 2022 年 5 月的 TIOBE 编程语言排行榜中,C++ 位列第四。同样地,谷歌内部也在广泛使用 C++。

图源:https://hellogithub.com/report/tiobe/
不过近日,在加拿大多伦多举办的 CPP North C++ 大会上,谷歌工程师 Chandler Carruth 宣布谷歌内部正在打造一种新的编程语言—— Carbon,并将它作为 C++ 的继任者。目前,Carbon 编程语言正处于实验阶段。
正如微软创建 TypeScript 来更新 JavaScript、JetBrains 创建 Kotlin 来弥补 Java 的缺点,Carbon 将作为替代 C++ 的语言,为开发人员提供一种全新的语言来解决内存安全和泛型等现代开发概念。

在谈到为何要替代 C++ 时,Carruth 表示,C++ 作为长期以来构建性能关键应用的首选语言,它自身的很多问题困扰着现代开发人员。C++ 积累了数十年的技术负债,带有的很多过时实践都是其前身 C 语言的一部分。C++ 的维护者优先考虑向后兼容,以便继续支持广泛使用的项目,例如 Linux 及其包管理生态系统等。
此外,C++ 语言的发展也受到了官僚委员会程序的阻碍,该程序以标准化而非设计为导向。这种做法导致很难添加新功能。C++ 在很大程度上处于一个隔绝的开发过程,其中可能经过数年才会做出一些重要决定。
因此,Carruth 希望通过更开放的社区主导环境来构建 Carbon 语言,并已开源。目前,该项目已在 GitHub 上获得了 16.5k 的 Stars。

GitHub 开源地址:https://github.com/carbon-language/carbon-lang
Carbon 的设计理念和特性
谷歌希望在 2022 年年底推出 Carbon 的核心工作版本,即 v0.1。Carbon 将建立在现代编程原则的基础上,包含一个泛型系统,使开发人员不再需要为每个实例检查和再核对代码。
C++ 语言中亟需的一个特性是内存安全。内存访问 bug 是安全漏洞的罪魁祸首之一,Carbon 设计人员将探索追踪未初始化状态的更好方法、设计支持动态边界检查的 API 和惯用语,并构建全面的默认 debug 构建模式。随着时间的推移,设计人员还计划构建一个安全的 Carbon 子集。
Carbon 语言将支持以下功能:
性能关键型软件;
软件和语言演变;
易于阅读、理解和编写的代码;
实用的安全和测试机制;
快速且可扩展的开发;
现代操作系统平台、硬件架构和环境;
与现有 C++ 代码的互操作性和迁移。
同时,Carbon 语言的亮点包括如下:
Introducer 关键字和简单语法;
函数输入参数为只读值;
指针提供间接访问和变体;
使用表达式命名类型;
软件包为 root 命名空间;
通过包名导入 APIs;
用显式对象参数来声明方法;
单继承、默认使用最终类;
强大且经过定义检查的泛型;
类型显式地实现接口。
Carbon 设计团队将着手创建一个内置包管理器,这在 C++ 中非常欠缺。此外,团队还计划编写一些将 C++ 代码迁移到 Carbon 代码的工具。下图左为 C++ 代码,右为 Carbon 编写的相同函数:

为何不大力发展 Rust 语言呢?
有人或许会问了:最近有专门为解决内存安全性能应用的需求而构建的 Rust 语言,为何不直接使用它呢?Carruth 对此表示,如果 Rust 适合你,就继续使用。但是,将 C++ 的生态系统转移到 Rust 非常困难。

相比之下,Carbon 是建立在已有 C++ 生态系统之上,适合那些已经拥有大量 C++ 代码库的开发人员,这些库很难转换到 Rust。
Carbon 有望成为 C++ 的「继任者」
计算机编程语言是程序设计最重要的工具,每个程序员都有自己熟悉的一套编程语言。
此前,谷歌也开源了编程语言。例如 2006 年谷歌开源 Go 语言,其目标是兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性,短短几年,Go 成为最热门语言之一,许多大公司用 Go 来开发自己的产品。与此同时,最初旨在替代 JavaScript 的 Dart 编程语言直到 Flutter 发布才成为主流。
这次谷歌内部新打造的编程语言 Carbon,还处于实验性阶段,大家的评价如何呢?
有网友表示:C++ 对于特定的任务是好的,但现在看起来就像一个怪物,而现在 Carbon 看起来就很不错。

更有人表示 Carbon 有望成为 C++ 的「继任者」:

不过也有人认为:Carbon 底层是用 C++ 实现的,一个用 C++ 实现的编程语言,想要替代 C++,说服力不够。不过预测又会有一批新程序员上岸 Carbon。

还有网友想让 Carbon 与 JavaScript 进行一番比较,看看哪个更好:

几年之后,Carbon 会不会又成为一种热门编程语言呢?
原文地址:http://www.myzaker.com/article/62de2cfe8e9f0929be38552d