查看原文
其他

谷歌开源替代C++的编程语言:Carbon

21CTO 2023-01-28

导读:Carbon 是谷歌内部构建的最新编程语言,今天作为 C++ 的实验性继任者亮相。

近几年来,Google 创造了不少新的编程语言,其中一些已经变得比其它语言更流行和突出。


例如,Golang(或简称 Go)是为了改进服务器和分布式系统的开发而创建的,现在已被公众采用。与此还有 Dart 语言,最初旨在作为 JavaScript 的替代品,直到 Flutter 发布才成为主流。


今天,在多伦多举行的 Cpp North 大会上,出席会议并记录幻灯片的 Conor Hoekstra分享了 Google 员工 Chandler Carruth 对命名为 Carbon 的新编程语言的愿景。


为了设置场景,Carruth 展示了当今最流行的编程语言中有多少有后继者,可以让开发人员快速提高生产力并利用现代编程语言设计。



Android 开发者很明白 Kotlin 将是 Java 的继承者,正如 iOS 开发者知道 Swift 是 Objective-C 的继承者一样。


来自 Microsoft 的 TypeScript 彻底增强了 JavaScript,同时保持舒适的使用并能够“转译”回 JavaScript。


C++ 在 Google 中得到了大量使用,类似地是原始 C 语言的继承者。



虽然有些人认为 Rust 最初是一个 Mozilla 项目,后来发展为拥有大量公众追随者,但它却是 C++ 的继承者,但 Carruth 想知道这个类比是否仍然存在。


尽管不可否认,Rust 是一种很好的启动新项目的语言,但它不像 Java 和 Kotlin 那样具有“双向互操作性”,因此很难稳定地进行迁移。


如果 Rust 今天适合你,你应该使用它。但是将 C++ 生态系统迁移到 Rust 是比较困难的。


为此,虽然 Carbon 与 Rust 有许多相同的目标,例如帮助开发人员创建“性能关键软件”,但 Carbon 还旨在与现有的 C++ 代码完全互操作。此外,如果需要,目标是尽可能轻松地从 C++ 迁移到 Carbon。


至于为什么 C++ 开发人员可能要考虑将 Carbon 引入他们的代码库,Carruth 在舞台上分享了该语言的许多亮点。


该语言设计里列了一大堆特性,野心很大。以下是看起来有改进的地方:


  • 类型是编译期表达式

  • 结构化类型 (structural types)

  • 没有空指针 ,用 Optional(T*)

  • 数组是值类型,支持切片类型 (slice)

  • 基于标签联合的和类型

  • 值类别只有左值和右值,没有引用类型

  • Move 运算符 (~x)

  • 条件表达式(if c then t else f

  • 无损隐式转换

  • 模式匹配

  • 命名返回值

  • 砍掉多继承

  • 基于接口的泛型约束,接口组合,关联类型,特化,动态派发,变长参数泛型

  • 与 C++ 的双向互操作,能导入已有的 C++ 代码

  • 官方包管理、文档与工具链

  • TODO:通过强化类型系统和抽象来增强内存安全性

  • TODO:生存期和移动语义

  • TODO:结构化的元编程

  • TODO:类似 Rust 的错误处理 (Result 类型和 Try 运算符)

  • TODO:抽象机,匿名函数、协程、并发


整体来看,这门新语言相当于将 Rust 去掉所有权、生存期与借用检查,再加上类、单继承和混入等特性。


编辑:万能的大雄


相关阅读:


学习“DevOps”的最佳编程语言

哪个编程语言和运行环境最省电?

英特尔 CTO:开源生态系统“写得不好”


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存