“我们了解社区对此主题演讲的兴趣。我们将加快发布录音,”会议组织者在推特上说。Carruth 是谷歌核心编程语言和语言演进的技术负责人,在 C++ 标准委员会中代表谷歌,并且是 LLVM 和 Clang 的贡献者。
Carbon 开发人员解释说,虽然 C++ 是“性能关键型软件的主导语言”,但它的遗留问题和技术债务意味着“逐步改进 C++ 极其困难”。
一种解决方案是迁移到其他语言,例如 Rust、Kotlin、Swift 或 Go,但这些语言很难迁移,并且在某些情况下会产生性能开销。Carbon 是一种新语言,旨在匹配 C++ 的性能并保持“无缝双向互操作性”,并为 C++ 开发人员提供温和的学习曲线。
该团队还承诺为 C++ 代码提供“某种程度的源到源翻译”。该项目与适用于 JavaScript 开发人员的 TypeScript 或适用于 Java 开发人员的 Kotlin 相似,虽然比较起来并不完全相同。Carbon 旨在与 C++ 代码互操作并使迁移变得容易。Carbon 工具链将支持编译 C++ 代码。
为什么C++很难改进?
C++ 本身是从 C 的一个分支开始的,C 语言已经有 50 年的历史了,所以有很多遗产也就不足为奇了。根据Carbon 团队的说法,C++ 设计人员随着时间的推移,添加了并不是替换原有语言功能的部分,从而创建了复杂的功能交互。保持二进制兼容性是另一个遗留问题。此外,C++ 委员会和演进过程是“以标准化而非设计为导向”,速度缓慢,有时甚至无法做出决定。
Carbon 致力于通过基于开源原则的新方法来回避这些问题。“我们甚至会尝试通过内置的包管理器来弥补 C++ 生态系统中的巨大差距,”文档中写道。目前的路线图旨在今年完成该语言的 0.1 版,2023 年完成 0.2 版,2024 年或 2025 年完成 1.0 版。
Carbon 语言对于 C++ 和 C 开发人员来说看起来很熟悉,但也存在许多差异。函数用 fn 关键字声明,变量用 var 声明。还有强类型元组。auto 关键字支持类型推断。支持指针但不支持指针运算;唯一的指针操作是寻址和取消引用。类支持单继承而不支持多继承。
内存安全是一个重要的考虑因素,但不是最初的目标。“Rust 的方法与 Carbon 的不同之处在于,Rust 从安全开始,而 Carbon 从迁移开始,”文档说。该方法是简化语言,目的是“为安全功能创造空间”,然后“重新设计基础用以建模和实现安全性”。
该项目在 Apache 2 下获得许可,但 LLVM 除外。据该团队称,“我们计划创建一个开源基金会,并将所有与 Carbon 相关的权利转让给它;我们的目标是让基础设置类似于其他开源项目,例如 LLVM 或 Kubernetes。” 然而该项目目前要求贡献者同意谷歌的 CLA(贡献者许可协议),这对某些人来说可能是个问题。谷歌还资助了 Carbon 基础设施。
为什么不使用 Rust?
“如果你想使用 Rust,并且它在技术上和经济上对你的项目都是可行的,你应该使用 Rust,” 就是答案。
Rust 的问题是 Carbon 能否成功的核心。“Rust(从我的偏见来看)目前正在成为标准的低级语言,所以我不太相信 Rust-but-with-OO 足以成为一个卖点,”一位开发人员说在黑客新闻上。不过另一位说,“每天启动的 C++ 项目可能比 Rust 项目还多。因此,任何能够在 100% 互操作的同时超越 C++ 的东西都是好消息。”
#挑战30天在头条写日记#
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.