谷歌工程师 Chandler Carruth 此前在多伦多举办的 CppNorth 大会上宣布,正式开源谷歌内部打造的编程语言 Carbon,并号称 Carbon 是 C++ 的继任者(目前处于实验性阶段)。此举不可避免的在 C++ 社区中引发了很多讨论,同时也引来了 C++ 之父 Bjarne Stroustrup 的回应。
在被外媒问及 Carbon 的的可行性时,Bjarne 回答称:
“总是有新的语言试图成为 C++ 的继承者。我欢迎对编程语言和编程风格的实验,但并不真的想助长争议。批评已有的语言很容易--我们知道它们的问题--但通常很难在不造成语言规则、库和管理方面的全新问题的情况下提供替代品。Carbon 是如此之新,而且规范不足,我无法真正做出有意义的技术评论。”
对于 Carruth 和 Carbon 团队声称的 C++ 语言演进过程中存在的缺陷,譬如:很慢、有时缺乏决断力、且主要集中在标准化而不是语言改进上;Bjarne 则未予置评。
不过 Carruth 也声称,Carbon 不是要当 C++ 的竞争对手。在会议上被问及 Carbon 将如何与未来改进的 C++ 版本竞争时,他的回答是:“我的目标不是竞争。我的目标是探索我们用 C++ 做不到的事情。”
而关于“作为一种全新的编程语言,Carbon 为什么不从一开始就建立内存安全”这一问题。Carruth 则表示,“不幸的是,C++ 是非常不安全的,所以我们的起点很低”。他指出,该项目优先考虑的是迁移而不是安全,但其目的是为了在以后改善内存安全。"从长远来看,我们希望至少和 Go 或 Swift 一样安全"。反观 Rust,虽然最初也标榜是 C++ 的继任者,但该语言可能永远无法实现与 C++ 的充分互操作性以实现顺利迁移。
针对“为什么 Carbon 基于与 C++ 17 而不是 C++ 20 的互操作性”,Carruth 回答称,当时在他们使用的已发布的编译器中,C++20 还不够完善。但之后如果有一个很好的动机,他们可以考虑转换。
至于 Carbon 为什么叫 Carbon?Carbon 的维护者 Jon Ross-Perkins 则表示,“这只是一个以 C 开头的名称,除此之外没有更多的含义。”
相关阅读:
- 谷歌开源替代 C++ 的编程语言:Carbon