探索 Carbon,C++ 的新超集

探索 Carbon,C++ 的新超集C 是 C 编程语言的继承者 无疑是现代最相关的语言之一 C 为现代编程语言中使用的 Python 机器学习 JavaScript 库 游戏开发和许多其他工具提供支持 对于每个 Grand Challenge 如果您找到了解决方案 您会在底部某处看不到它的地方找到一些 C

大家好,我是讯享网,很高兴认识大家。

C++ 是 C 编程语言的继承者,无疑是现代最相关的语言之一。C++ 为现代编程语言中使用的 Python 机器学习、JavaScript 库、游戏开发和许多其他工具提供支持。

对于每个 Grand Challenge,如果您找到了解决方案,您会在底部某处看不到它的地方找到一些 C++。——比亚内·斯特劳斯特鲁普

C++ 也是较旧的面向对象编程语言之一,具有适应性强的设计、多功能性和广泛的兼容性。C++ 启发了 Java 等新语言,使该语言可用于开发游戏、医疗设备、人工智能和控制系统以及许多其他应用程序。

Rust 和 Golang 等许多现代编程语言如雨后春笋般涌现,允许开发人员灵活地编写干净、安全的代码,并且比他们的前辈更省心。但是,较旧的编程语言仍然为我们日常生活中运行的许多代码库提供支持。

我们还看到编程语言的推出为 C/C++ 等较旧的语言提供解决方案。在当今世界,它们是 JavaScript、TypeScript、Objective-C、Swift、Java 和 Kotlin。

在最近结束的CPP North 会议上,谷歌宣布他们已经在开发 C++ 的继任者:Carbon 编程语言。在本文中,我们将讨论 Carbon 是什么、它的特性、它与 C++ 的不同之处、如何设置它等等。

让我们开始吧!

  • 什么是碳?
  • Carbon 编程语言的特点
    • 互操作性
    • 现代仿制药系统
    • 内存安全改进
  • 碳与 C++
  • 开始使用碳
    • 安装碳
  • Carbon 语法概述
    • 碳中的变量
    • 碳中的循环
    • 碳中的功能
    • Carbon中的条件
    • 碳课程
  • 展望碳的未来

什么是碳?

在 C++ 中,有一种更小更干净的语言正在努力摆脱困境。——比亚内·斯特劳斯特鲁普

Carbon 是一种开源的、静态类型的、编译的编程语言,最初由 Google 构建,以继承 C++。Carbon 为开发人员提供现代编程实践,例如泛型、模块化代码组织和简单语法。

Carbon 希望与 C++ 的性能和可扩展性相媲美。该语言旨在实现与 C++ 的双向互操作性,以实现迁移和采用。这意味着您可以将 C++ 代码库转换为 Carbon,反之亦然,以及使用现有的 C++ 库。

Carbon 也非常友好,对 C++ 开发人员具有温和的学习曲线,为现有的软件设计和架构提供了更多的表现力和支持。

碳仍然是一个实验,处于开发阶段。话虽如此,但尚未添加许多帮助您编写自己喜欢的 Carbon 代码的功能。

Carbon 编程语言的特点

Carbon 与 C++ 有一些非常相似的地方。它融入了现代编程实践、对 C++ 的支持、互操作性、内存安全和泛型。这些是 Carbon 编程语言的一些显着特性,我们现在将讨论其中的一些特性。


超过 20 万开发人员使用 LogRocket 来创造更好的数字体验了解更多 →


互操作性

从逻辑上讲,像 Carbon 这样的后继语言需要与其先前的语言兼容。Carbon 与 C++ 双向(双向)兼容,您可以将任何一种语言与另一种语言一起使用。让我们来看看它的互操作性:

// Source code by the authors of the Carbon programming language ​ // C++ code used in both Carbon and C++: struct Circle {  float r; }; ​ // Carbon exposing a function for C++: package Geometry api; import Cpp library "circle.h"; import Math; ​ fn PrintTotalArea(circles: Slice(Cpp.Circle)) {  var area: f32 = 0;  for (c: Cpp.Circle in circles) {    area += Math.Pi * c.r * c.r; }  Print("Total area: {0}", area); }

讯享网

在上面的示例中,Carbon 代码使用C++ 库来打印圆的面积。circle.h

讯享网// Source code by the authors of the Carbon programming language ​ // C++ calling Carbon: #include <vector> #include "circle.h" #include "geometry.carbon.h" ​ auto main(int argc, char argv) -> int {  std::vector<Circle> circles = { 
 
   
 {1.0}, {2.0}};  // Carbon's `Slice` supports implicit construction from `std::vector`,  // similar to `std::span`.  Geometry::PrintTotalArea(circles);  return 0; }

上面的 C++ 代码使用该库使用提供的参数打印圆的面积。请注意 Carbon 代码是如何更具可读性和直观性的。geometry.carbon.h


讯享网

Win10最新官方ISO下载,Win10 21H2 Build 19044.2006ISO镜像下载

现代仿制药系统

泛型是现代编程语言(包括 Rust 和 Go)中的众多强大功能之一。Carbon 具有现代泛型系统,具有检查定义和可选模板,可与现有 C++ 代码无缝互操作。

Carbon 的通用系统值得关注。它将确保对泛型定义进行类型检查,以避免在编译时进行定义检查的成本。它还将确保强大的检查接口,以减少对实现的意外依赖并创建重要的显式合同。

内存安全改进

内存安全是使用 C++ 的一个重要任务点。Carbon 旨在通过跟踪未初始化状态、增加初始化强制执行和阻止初始化错误来解决内存安全问题。

Carbon 将具有基本的 API 和习惯用法,以支持调试中的动态绑定检查。它还将支持具有全面默认调试模式的强化构建。Carbon 的安全策略还可以采用一些有保证的内存安全编程模型。

您可以根据您对内存安全的偏好,在调试、性能和强化模式下运行 Carbon 程序。您可以在 GitHub 文档中阅读有关Carbon 安全策略的更多信息。

碳与 C++

由于 Carbon 是新的并且该语言不是生产就绪的,因此您只能根据它们的共享特性将 Carbon 与 C++ 进行比较。C++ 已经存在了一段时间,开发人员已经能够分享他们对该语言的挫败感。希望 Carbon 能够像 TypeScript 对 JavaScript 所做的那样,最大限度地减少众多 C++ 问题。

以下是 Carbon 和 C++ 之间的简要比较:

C++
面向对象_ 是的 是的
学习曲线_ 温和的 难以掌握_
表现力 很有表现力 难以表达_
类型系统_ 强类型;_ s statically -键入 强类型;_ 静态-键入
泛型支持_ 是的 模板;类似于泛型_ _

在我看来,Carbon 成功接替 C++ 的可能性相对较高,尤其是考虑到 C++ 的状态和该语言背后的公司。进一步考虑两种语言之间的双向互操作性,开发人员不一定会错过 C++ 功能。

Go 和 Dart 已经在他们的预期领域得到了广泛的采用,而 Carbon 可能会非常成功。

开始使用碳

Carbon 仍处于实验模式,因此该语言远未准备好生产。但是,您仍然可以使用该语言的当前状态并考虑为它的发展做出贡献!

现在,我们将介绍如何使用 Carbon 的资源管理器来检查代码库并使用该语言。

安装碳

您首先需要在您的计算机上安装 Homebrew。您可以查看这些安装说明以在 Linux 和 macOS 上安装 Homebrew。

首先使用 Homebrew 包管理器安装 Bazelisk:

brew install bazelisk

接下来,安装llvm并导出PATH变量:

讯享网brew install llvm export PATH="$(brew --prefix llvm)/bin:${PATH}"

克隆 Carbon 存储库并进入您机器上的目录:

git clone https://github.com/carbon-language/carbon-lang cd carbon-lang

最后,构建并运行 Carbon explorer:

讯享网bazel run //explorer -- ./explorer/testdata/print/format_only.carbon

就是这样!现在您可以开始使用 Carbon 进行试验并检查该语言的工作原理。

Carbon 语法概述

Carbon 的语法实际上与 Rust 和其他一些语言的语法非常相似。让我们看一下 Carbon 的语法概述,包括变量、循环、条件、函数和类。

碳中的变量

var您可以使用关键字声明变量。Carbon 是静态类型的,因此您必须指定数据类型。

var hello: auto = "Hello, world!";

auto数据类型是可用于任何变量的通用数据类型。就像 C++ 一样,每条语句都必须以分号结尾。

碳中的循环

Carbon 采用 c 风格的 for 循环,包括一系列 for 循环功能。

讯享网for (var name: String in names) { // names is an array    Print(name); }

for 循环遍历数组并打印数组的元素。

碳中的功能

Carbon 的函数与 Rust 的函数非常相似,不同之处在于您必须显式声明参数变量。

fn Sum(var a: i32, var b: i32) -> i32 { return a + b; }

该Sum函数返回调用时参数的总和。

Carbon中的条件

Carbon 也使用 c 风格的条件语句。

讯享网fn check(var value: i32) -> i32 { if(value == 7) { Print(value); } else { Print(0); } }

该check函数检查参数输入是否等于7并打印valueif 是否等于或打印0if 语句无效。

碳课程

Carbon 提供了一个关键字来定义类及其标识符和任何类型的字段。

class Human {  var phone: i32;  var age: i32;  var name: String; }

该类Human具有phone、age和name字段。您可以为您的操作声明任意数量的字段。

展望碳的未来

Google 和 Carbon 的团队将 Carbon 设想为一种快速、可扩展的语言,可以发展并支持在现代操作系统、硬件和环境上运行的性能关键型软件。Carbon 还将朝着向后或向前兼容的方向发展,并为该语言提供稳定的应用程序二进制接口 (ABI)。

Carbon 的实验但工作版本计划于 2022 年底公开,完整版本将于 2024 年至 2025 年提供。您可以查看语言目标的详细概述。

结论

在本文中,我们概述了 Carbon 及其特性,将 Carbon 与其前身 C++ 进行了比较,研究了如何安装 Carbon 及其语法如何工作,以及研究了 Carbon 未来的发展方向。

Carbon 正在采用包含电池的方法来开发该语言。该存储库位于 GitHub 上,您可以在其中为构建每个人都喜欢的 C++ 继任者的讨论和开发做出贡献。

小讯
上一篇 2025-03-21 22:38
下一篇 2025-01-08 07:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125177.html