为了取代古老但缓慢的 C++,谷歌研究人员推出了一种全新的“实验性”开源编程语言,称为 Carbon。
Carbon 可以作为 C++ 的后继语言,它为开发人员提供了一个新语言的简单起点,该语言解决了内存安全和泛型等当代开发概念。
这类似于微软如何构建 Typescript 来更新 JavaScript 和 Kotlin 来加强 Java 的弱点。
多年来,谷歌开发了许多编程语言,其中一些已经获得了显着的名声和声望。
例如,Golang(或简称 Go)是为了促进服务器和分布式系统的创建而开发的,随后被公众所接受。
飞镖 编程语言作为 JavaScript 替代品而创建的,直到 Flutter 推出时才广为人知。
Google 员工 Chandler Carruth 于 19 年 2022 月 XNUMX 日在多伦多举行的 Cpp North 大会上提出了他对一种名为 Carbon 的新编程语言的想法, 根据康纳·霍克斯特拉,谁出席并录制了幻灯片。
为了设定场景,Carruth 展示了当今几种最受欢迎的编程语言如何产生后代,使开发人员能够迅速提高生产力并从当代语言设计中受益。
让我们从对 Carbon 编程语言的一般介绍开始,包括它的特性、谷歌发明它的目的等等。
Carbon编程语言简介
19 年 2022 月 XNUMX 日,谷歌宣布 Carbon 是其创建的最新编程语言。 它旨在通过实验取代 C++。
感谢a 仿制药系统,这消除了对每个实例化的代码进行仔细检查的需要,Carbon 将在现代编程概念的基础上构建。
到年底,设计计划提供一个基本的操作版本(0.1版)。
内存完整性是 C++ 缺少的一个关键元素。 安全漏洞的主要来源之一是内存访问问题。
开发动态边界检查、更好地跟踪未初始化状态以及彻底的默认调试构建模式都是 Carbon 团队的目标。 创建者打算随着时间的推移创建一个安全的 Carbon 子集。
但是,以下是新编程语言的一些关键特征:
- 要命名类型,请使用表达式。
- 具有定义检查的强泛型
- 类型专门执行接口
- 介绍短语和基本语法
- 指针允许不受限制的访问和变异。
- 函数输入参数的值是只读的。
- 根命名空间是包。
- API 可以使用它们的包名来导入。
- 方法是通过显式对象参数声明的。
- 默认情况下,类是最终的; 只有一个继承
碳的特点
现代和发展中
- Carbon 版本之间的升级非常简单且基于工具。
- 强大的语言基础,特别是如果您使用过 C++,并且易于学习
- 更安全的基础和逐步实现内存安全子集的方法
欢迎开源社区
- 一个努力变得温暖、接受和邀请的社区
- 其目标和优先事项是明确的和强有力的治理
- 包含编译器、库、文档、工具、包管理等的多合一策略
快速且与 C++ 兼容
- 一起工作 C ++代码 你已经有了,包括继承和模板
- 使用 LLVM,性能与 C++ 相当,对位和地址的低级访问
- 快速、可扩展且与现有 C++ 构建系统兼容的构建
谷歌为什么要构建 Carbon 编程语言?
性能关键型软件仍然主要使用 C++ 编写,它拥有庞大且不断扩展的代码库和投资。
然而,如上所述,它在推进和满足开发人员的需求方面遇到了困难,这主要是由于积累了多年的技术债务。
由于 C++ 积累的技术债务以及演化过程中的困难,逐步改进 C++ 是极其困难的。
解决这些问题的理想方法是从强大的语言基础开始,例如当代泛型系统、模块化代码结构以及一致、直接的语法,而不是直接继承 C 或 C++ 的传统。
Go、Swift、Kotlin、Rust 和许多其他当代语言已经提供了出色的开发体验。 能够使用这些当前语言之一的开发人员应该这样做。
不幸的是,这些语言的设计严重阻碍了从 C++ 的采用和迁移。 这些障碍包括性能开销和对软件惯用设计的修改。
Carbon 并不是逐步改进 C++ 的尝试; 相反,它是一种后继语言策略。 它的重点是 C++ 互操作性,以及目前使用 C++ 的开发人员和代码库的广泛接受和迁移。
C++ 替代语言必须具有:
- 与 C++ 相媲美的性能是开发人员的一个关键特性。
- C++ 程序员易于管理的学习曲线和熟悉程度
- 可扩展的迁移,包括一些源到源的惯用 C++ 代码翻译。
- 对当前软件的架构和设计具有类似的表现力和支持。
- 与 C++ 的无缝和双向互操作性,允许任何库采用 Carbon,而无需移植堆栈的其余部分。
借助这一策略,Google 增加了已经存在的 C++ 生态系统,并整合了当前的投资、代码库和开发社区。
一些语言已经在各种生态系统中采用了这种方法,Carbon 试图在这些情况下发挥与 C++ 类似的功能:
- Java – 科特林
- JavaScript – 打字稿
- C++——碳
C++ VS 碳代码
如果您已经是 C++ 开发人员,Carbon 的学习曲线应该很低。 它由一组固定的语法结构组成,这些语法结构应该听起来自然并且易于阅读和理解。
C++ 代码示例:
此碳代码对应于:
碳与锈
另一种专门为满足内存安全性能应用程序的要求而设计的现代语言称为 Rust。
那么为什么不简单地使用 Rust 呢?
虽然有些人认为 Rust 最初是一个 Mozilla 项目,后来发展为拥有大量公众追随者,是 C++ 的继承者,但 Carruth 怀疑这种平行是否仍然有效。
Rust 无疑是开始一个新项目的绝佳语言,但由于它缺乏 Java 和 Kotlin 等语言的“双向互操作性”,因此逐渐过渡到它具有挑战性。
Carruth 在 CPP North 做了一次演讲,并鼓励已经在使用 Rust 的人继续这样做。 已经拥有大量 C++ 代码库且难以转换为 Rust 的开发人员应该使用 Carbon。
特别是,Carruth 将 Carbon 称为“后继语言”,它构建在现有生态系统之上,在本例中为 C++。
为此,Carbon 旨在与当前的 C++ 代码完全兼容,即使它对 Rust 有许多目标,例如协助程序员创建“性能关键型应用程序”。
此外,它旨在尽可能简单地从 C++ 迁移到 Carbon。
结论
最后,Carbon 语言的创作者努力关注创作过程。 该项目的代码可供索取并公开存储在 Github上,其文化被定义为对普通公民和 IT 部门都具有包容性和开放性。
Carbon 团队认为,Carbon 需要成为一个由社区驱动的自治项目,而不仅仅是一个由谷歌推动的项目,才能在未来发展。
Caruth 补充说,尽管许多 IT 企业对此感兴趣,但这一概念仍处于试验阶段。
发表评论