大家好,我是校长。

前几天看到一条新闻,在近日举行的 CppNorth 开发者大会上,谷歌工程师 Chandler Carruth 宣布了名为 “Carbon” 的全新开源开发语言,并称它将是 C++ 的继任者。

2336e1787990f40aafd843795a8ac9b0.jpeg

在 Carbon 语言的 GitHub 开源文档上,赫然写着:Carbon 语言是 C++ 的继任者。

fb8efde807df3243ed10317a38f19e59.jpeg

那为什么要开发 Carbon 语言替代 C ++ 呢?

在 Carbon 语言的开源技术文档上是这么写的,如下:

C++ 仍然是性能关键型软件的主要编程语言,拥有大量且不断增长的代码库和投资。然而,如上所述,它正在努力改进和满足开发人员的需求,这在很大程度上是由于积累了数十年的技术债务。由于技术债务本身和演化过程中的挑战,逐步改进 C++ 非常困难。解决这些问题的最佳方法是避免直接继承 C 或 C++ 的传统,而是从坚实的语言基础开始,如 现代泛型系统、模块化代码组织和一致、简单的语法。

现有的现代语言已经提供了出色的开发人员体验:Go、Swift、Kotlin、Rust 等等。不幸的是,这些语言的设计对 C++ 的采用和迁移存在重大障碍。这些障碍的范围从软件惯用设计的变化到性能开销。

Carbon 从根本上说是一种后继语言方法,而不是逐步发展 C++ 的尝试。它是围绕与 C++ 的互操作性以及现有 C++ 代码库和开发人员的大规模采用和迁移而设计的。

那凭什么认为 Carbon 比 C++ 更优秀,能成为继承者呢?

Chandler Carruth 表示,Carbon 拥有与 C++ 的 “双向互操作性”,也就是说开发者可以直接在 Carbon 语言的程序中使用 C++,这大大提升了项目迁移的便捷性。

而从 Carbon 的 GitHub 技术文章也能够看出,谷歌在开发该语言的时候,就将接替 C++ 作为了核心目标,它拥有大量与 C++ 相契合的特性,一个熟练的 C++ 开发者将能够迅速上手 Carbon,并熟练进行程序的编辑。

官方开源文档上是这么说的,如下:

快速且可与 C++ 一起使用

  • 性能匹配 C++ 使用 LLVM,对位和地址进行低级访问

  • 与现有的 C++ 代码互操作,从继承到模板

  • 可与现有 C++ 构建系统一起使用的快速且可扩展的构建

现代且不断发展

  • 易于学习的扎实语言基础,特别是如果您使用过 C++

  • Carbon 版本之间基于工具的简单升级

  • 更安全的基础,以及通往内存安全子集的增量路径

欢迎开源社区

  • 明确的目标和优先事项,以及强有力的治理

  • 致力于欢迎、包容和友好的社区

  • 包含电池的方法:编译器、库、文档、工具、包管理器等

f2318ba1c4adfb37a72e06dc0d8cf0fa.jpeg

Carbon 从根本上说是一种后继语言方法,而不是逐步发展 C++ 的尝试。它是围绕与 C++ 的互操作性以及现有 C++ 代码库和开发人员的大规模采用和迁移而设计的。Carbon 语言能做到以下几点:

  • 性能匹配 C++,这是我们开发人员的基本属性。

  • 与 C++ 的无缝、双向互操作性,因此现有 C++ 堆栈中的任何库都可以采用 Carbon 而无需移植其余部分。

  • 一个温和的学习曲线,对 C++ 开发人员有合理的熟悉度。

  • 对现有软件的设计和架构具有可比性和支持

  • 可扩展的迁移,对惯用的 C++ 代码进行某种程度的源到源转换。

通过这种方法,我们可以在 C++ 现有的生态系统之上构建,并带来现有的投资、代码库和开发人员群体。

所以,Carbon 语言和 C++ 的关系就像是:

  • JavaScript → TypeScript

  • Java → Kotlin

  • C++ → Carbon

正如我们熟知的,C++ 是 C 语言的继承者,Kotlin 是 Java 的继承者,Swift 是 Objective-C 的继承者,而来自微软的 TypeScript 彻底增强了 JavaScript,同时保持舒适的使用并能够 “转译” 回 JavaScript。那么 Carbon 语言是 C++ 的继承者。

看看这些语言的关系,就知道程序员为什么要活到老,学到老了,也就知道为什么很多经验都无法积累了。

就连官方都说:由于技术债务本身和演化过程中的挑战,逐步改进 C++ 非常困难。解决这些问题的最佳方法是避免直接继承 C 或 C++ 的传统,而是从坚实的语言基础开始,如 现代泛型系统、模块化代码组织和一致、简单的语法。

你看,我终于知道为什么程序员这么累了,也终于知道为什么技术总是在推陈出新了。不仅仅开发软件的人不喜欢祖传的遗留代码,就连开发编程语言的顶尖程序员也都不喜欢遗留代码,不喜欢技术债。编程语言的开发者,真的是一言不合,就开发一个新语言啊,如果某一种开发语言有缺陷,我就不去修改和维护,技术债太严重了,还不如直接开发一个新语言呢?

所以,摆脱技术债最好的方法就是:重新开发一个新的编程语言或者重新开发一个新产品。

这话是不是很耳熟呢?

对于我们做软件开发的程序员来讲,面对遗留代码,祖传的屎山代码,不敢动,宁愿重新开发一个新功能,新产品,也不愿意接收老代码。

这都是一脉相承,一脉相通的啊。

Carbon 语言开源地址:https://github.com/carbon-language/carbon-lang

点击下方公众号卡片,关注我

在公众号对话框,回复关键字 “1024”

免费领取副业赚钱实操教程

9eef3e6ed1cc66a4e0754daba27800bd.png

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐