跳转到内容

Carbon语言

本页使用了标题或全文手工转换
维基百科,自由的百科全书
Carbon
Carbon语言在GitHub上的徽标
Carbon语言在GitHub上的徽标
语言家族C
設計者Google
類型系統静态类型、标称类型(英语:Nominal type system)、隐含类型
實作語言C++
許可證Apache-2.0
文件扩展名.carbon
網站github.com/carbon-language/carbon-lang
受影响于
C++,Rust

Carbon或Carbon-lang是一个实验性的通用编程语言,旨在成为“C++的后继语言”。该项目开放源代码,由Google启动,沿用了之前Google自创的编程语言的脚步(Go和 Dart)。Google工程师钱德勒·卡鲁斯(英語:Chandler Carruth)在2022年7月多伦多的CppNorth会议上首次向公众介绍Carbon语言。[1][2][3]

该语言旨在修复C++的几个明显缺点[4],但提供了类似的功能集。该语言的主要目标是可读性和“双向互操作性”,因此不会像Rust那样存在语言障碍(虽然基于C++,但与C++不兼容)。语言的更改将由 Carbon 负责人决定。[5][6][7][8]

Carbon语言的文档、设计、实现和相关工具托管在GitHub上,基于Apache-2.0许可证(带有LLVM异常)。[9]

示例

[编辑]

下面的例子分别用Carbon和C++写成[10]:

Carbon C++
package Geometry;

import Math;

class Circle {
    var radius: f32;
}

fn PrintTotalArea(circles: [Circle]) {
    var area: f32 = 0;
    for (circ: Circle in circles) {
        area += Math.Pi * circ.radius * circ.radius;
    }
    Print("Total area: {0}", area);
}

fn Run() -> i32 {
    // A dynamically sized array, like `std::vector`.
    var circles: array [Circle] = ({.radius = 1.0}, {.radius = 2.0});
    // Implicitly constructs a slice from the array.
    PrintTotalArea(circles);
    return 0;
}
import std;

using std::span;
using std::vector;

struct Circle {
    float radius;
};

void printTotalArea(span<Circle> circles) {
    float area = 0.0f;
    for (const Circle& circ : circles) {
        area += std::numbers::pi * circ.radius * circ.radius;
    }
    std::println("Total area: {}", area);
}

int main(int argc, char* argv[]) {
    vector<Circle> circles{{.radius = 1.0f}, {.radius = 2.0f}};
    // Implicitly converts `vector` to `span`.
    printTotalArea(circles);
    return 0;
}

参考文献

[编辑]
  1. ^ Scheduled events for Tuesday, July 19, 09:00 - 10:30. CppNorth, The Canadian C++ Conference, July 17-20, 2022. CppNorth. [2022-07-21] –通过Sched.com. 
  2. ^ Carbon Language: An experimental successor to C++ - Chandler Carruth - CppNorth 2022. CppNorth. 2022-07-22 [2022-07-26]. (原始内容存档于2022-07-29) –通过YouTube. 
  3. ^ Bradshaw, Kyle. Carbon, a new programming language from Google, aims to be C++ successor. 9to5Google. 19 July 2022 [2022-07-26]. (原始内容存档于2022-07-29). 
  4. ^ Difficulties improving C++. carbon-language/carbon-lang repo. Google. 2022-07-21 [2022-07-26]. (原始内容存档于2022-07-21) –通过GitHub. 
  5. ^ Carruth, Chandler; Ross-Perkins, Jon; Riley, Matthew; Hummert, Sidney. Evolution and governance. carbon-language/carbon-lang repo. Google. 23 July 2022 [2022-07-26]. (原始内容存档于2022-07-25) –通过GitHub. 
  6. ^ Illidge, Myles. Google’s Carbon programming language aims to replace C++. MyBroadband. 21 July 2022 [2022-07-26]. (原始内容存档于2022-07-30). 
  7. ^ Jackson, Joab. Google Launches Carbon, an Experimental Replacement for C++. The New Stack. 20 July 2022 [2022-07-26]. (原始内容存档于2022-07-29). 
  8. ^ Mustafa, Onsa. Carbon, A New Programming Language from Google As A C++ Successor. PhoneWorld. 20 July 2022 [2022-07-26]. (原始内容存档于2022-07-25). 
  9. ^ carbon-lang/LICENSE. GitHub. 2020-06-16 [2022-07-24]. (原始内容存档于2022-07-24). 
  10. ^ carbon-lang/docs/images/snippets.md at trunk · carbon-language/carbon-lang. GitHub. [16 December 2023] (英语). 

外部链接

[编辑]