Carbon语言 教程

Cargo语言

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

Carbon语言的设计简洁而不失优雅,学习起来非常容易。在我们学习 Carbon语言的语法前,让我们先来了解 Carbon语言最基本的程序结构。我们通过 Hello World 例子来演示一下 Carbon语言 ...