Carbon 编程语言简介
Carbon 语言是 Google 开发的一种开源的静态编译语言,目标是成为 C++ 的继任者。
Carbon 语言,于 2022 年公开发布,目前还处于试验阶段。
Carbon 语言拥有大量与 C++ 相契合的特性,一个熟练的C++开发者将能够迅速上手Carbon,并熟练进行程序的编写。
1. 为什么要开发 Carbon
C++ 仍然是性能关键型软件的主要编程语言,拥有大量且不断增长的代码库和投资。然而,如上所述,它正在努力改进和满足开发人员的需求,这在很大程度上是由于积累了数十年的技术债务。由于技术债务本身和演化过程中的挑战,逐步改进 C++ 非常困难。解决这些问题的最佳方法是避免直接继承 C 或 C++ 的传统,而是从坚实的语言基础开始,如现代泛型系统、模块化代码组织和一致、简单的语法。
现有的现代语言已经提供了出色的开发人员体验:Go、Swift、Kotlin、Rust 等等。可以使用其中一种现有语言的开发人员应该. 不幸的是,这些语言的设计对 C++ 的采用和迁移存在重大障碍。这些障碍的范围从软件惯用设计的变化到性能开销。
Carbon 从根本上说是一种后继语言方法,而不是逐步发展 C++ 的尝试。它是围绕与 C++ 的互操作性以及现有 C++ 代码库和开发人员的大规模采用和迁移而设计的。C++ 的后继语言需要:
- 性能匹配 C++,这是我们开发人员的基本属性。
- 与 C++ 的无缝、双向互操作性,因此现有 C++ 堆栈中的任何库都可以采用 Carbon 而无需移植其余部分。
- 一个温和的学习曲线,对 C++ 开发人员有合理的熟悉度。
- 对现有软件的设计和架构具有可比性和支持。
- 可扩展的迁移,对惯用的 C++ 代码进行某种程度的源到源转换。
通过这种方法,我们可以在 C++ 现有的生态系统之上构建,并带来现有的投资、代码库和开发人员群体。有一些语言在其他生态系统中遵循了这个模型,Carbon 旨在填补 C++ 的类似角色。
2. Carbon 语言具有什么优势
1)快速且可与 C++ 一起使用
- 性能匹配 C++ 使用 LLVM,对位和地址进行低级访问
- 与现有的 C++ 代码互操作,从继承到模板
- 可与现有 C++ 构建系统一起使用的快速且可扩展的构建
2)现代且不断发展
- 易于学习的扎实语言基础,特别是如果您使用过 C++
- Carbon 版本之间基于工具的简单升级
- 更安全的基础,以及通往内存安全子集的增量路径
Carbon 语言与 C++ 具有“双向互操作性”,开发者可以直接在 Carbon 语言的程序中使用 C++,这大大提升了项目迁移的便捷性。
Carbon 语言利用了现代语言设计的优势,使开发者能够迅速提高生产力。
Carbon 语言的在 GitHub 上的资料显示,谷歌在开发该语言的时候,就将接替C++作为了核心目标。
Carbon 语言开发团队提到,虽然 C++ 现在依旧是有着主导性地位的语言,并有着庞大的代码库,但由于数十年的技术积累,想要持续改进C++已经是极其困难的一件事。
3. Carbon 语言的目标
- 性能关键型软件
- 软件和语言演变
- 易于阅读、理解和编写的代码
- 实用的安全和测试机制
- 快速且可扩展的开发
- 现代操作系统平台、硬件架构和环境
- 与现有 C++ 代码的互操作性和迁移
虽然许多语言共享这些目标的子集,但 Carbon 的不同之处在于它们的组合。
我们对 Carbon 也有明确的非目标,特别是包括:
- 适用于整个语言和库的稳定的应用程序二进制接口(ABI)
- 完美的向后或向前兼容性
4. Carbon 语言发展情况
在多伦多举行的 Cpp North 大会上,谷歌首席软件工程师和开源软件开发者 Chandler Carruth 分享了一种名为 Carbon 的新编程语言的愿景。Carruth 展示了当今许多最流行的编程语言是如何拥有继承者的,Carbon 语言在继承了 C++ 现有特性与生态的基础上,足够年轻,也足够“现代化”,拥有更为广阔的优化空间,潜力更大。
Carbon 项目的所有代码将全部公开托管在 GitHub 上,并开放 PR,这使得任何开发者都有了根据自己的需求优化改进 Carbon 语言的可能。
在现阶段,Carbon 想要继承甚至于取代 C++ 这一语言还过于遥远, 但作为一种新生的开发语言,它势必会带来新的开发生态,并带来新的技术。
Carbon Github上已经开源,地址:https://github.com/carbon-language/carbon-lang。