2022 年 7 月 19,Google 首席软件工程师 Chandler Carruth 在多伦多举行的 Cpp North 大会上发布了 Carbon。
Carruth说,尽管很多人可能认为 Rust 是 C++ 的继承者,但它缺乏 Carbon 提供的“双向互操作性”水平。如果 Rust 今天适合你,你应该使用它,但是将 C++ 生态系统迁移到 Rust 将非常困难。Carbon 目标是与现有的 C++ 代码完全互操作,并且让你从 C++ 到 Carbon 的过渡尽可能容易。
Carbon 是 Google 内部构建的最新编程语言,是一个仍处于实验阶段的开源项目,该项目的代码公开托管在 GitHub 上。
当产品出现问题时,最简单、最快的解决方法就是逐步改进现有产品,但为什么谷歌选择开始使用一种全新的语言呢?
C++ 是 C 语言的继承者,无疑是编程语言里最重要的语言之一。C++ 为 Python 机器学习、JavaScript 库、游戏开发和现代编程语言中使用的许多其他工具提供支持。
C++ 也是较早的面向对象编程语言之一,具有适应性强的设计、多功能性和广泛的兼容性。C++ 启发了 Java 等更新的语言,使该语言可用于开发游戏、医疗设备、人工智能和控制系统以及许多其他应用程序。
但是,C++ 的问题同样很多:
- 跨各种功能的累积技术缺陷(例如:整数提升规则)。与 C 的向后兼容性使得修复技术缺陷变得更加困难,并使代码更改难以实施。
- 向 C++ 添加新功能的演进过程非常困难,需要面对语言背后的严格治理以及可能长达数年的漫长审批过程。
所以 C++ 不能满足谷歌的的一些要求,比如性能要求、软件和语言的演变、易于理解和编写、快速和可扩展的开发等等。但用C++解决这些问题实在是太难了,或者说太慢了。但C++对于谷歌来说非常重要,据说谷歌的产品服务中有超过20亿行的C++代码。
所以谷歌只能采用另外一种方案,开发一种新的语言,可以与C++实现双向互操作。类似于创建 TypeScript 以弥补 Javascript 或 Kotlin for Java 的缺点的方式。经过谷歌工程师对多语言的深入研究和评估,引入了Carbon编程语言。
提到C++ 的继承者,很多人认为Rust是一个不错的选择,目前来说Rust 是一种更可行的语言,甚至 Carbon 本身的创造者也承认这一点。但它不具备 Java 和 Kotlin 等语言的“双向互操作性”,因此难以稳定迁移,这不符合谷歌的初衷。
Carruth阐述了Carbon的目标和宗旨,创建性能关键型软件,同时支持软件和语言的发展。另一个核心目标是使代码易于阅读、理解和编写。这可以为现代操作系统平台、硬件架构和环境实现快速且可扩展的开发。同样重要的是,carbon 还支持与现有 C++ 代码的互操作性和迁移。Carbon使用开源构建,用户可以根据设定的目标和优先级为程序做出贡献。
对于谷歌推出的新语言Carbon,网友也是众说纷纭。有人认为C++非常健壮,坚不可摧,是无法取代的基石。有人认为推出新语言只是一种作秀,对开发软件去起不到什么作用。也有人认为,Carbon的项目非常必要,因为C++在一些重要领域发展滞后,无法解决。Carbon的互操作性让他对这个项目非常期待。
距离Carbon发布已过去半年时间了,你用过这门新的语言吗?你的体验如何?