Carbon语言
外观
Carbon语言在GitHub上的徽标 | |
| 语言家族 | C |
|---|---|
| 設計者 | |
| 類型系統 | 静态类型、标称类型(英语:Nominal type system)、隐含类型 |
| 實作語言 | C++ |
| 許可證 | Apache-2.0 |
| 文件扩展名 | .carbon |
| 網站 | github |
| 受影响于 | |
| 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;
}
|
参考文献
[编辑]- ^ 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.
- ^ Carbon Language: An experimental successor to C++ - Chandler Carruth - CppNorth 2022. CppNorth. 2022-07-22 [2022-07-26]. (原始内容存档于2022-07-29) –通过YouTube.
- ^ Bradshaw, Kyle. Carbon, a new programming language from Google, aims to be C++ successor. 9to5Google. 19 July 2022 [2022-07-26]. (原始内容存档于2022-07-29).
- ^ Difficulties improving C++. carbon-language/carbon-lang repo. Google. 2022-07-21 [2022-07-26]. (原始内容存档于2022-07-21) –通过GitHub.
- ^ 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.
- ^ Illidge, Myles. Google’s Carbon programming language aims to replace C++. MyBroadband. 21 July 2022 [2022-07-26]. (原始内容存档于2022-07-30).
- ^ Jackson, Joab. Google Launches Carbon, an Experimental Replacement for C++. The New Stack. 20 July 2022 [2022-07-26]. (原始内容存档于2022-07-29).
- ^ Mustafa, Onsa. Carbon, A New Programming Language from Google As A C++ Successor. PhoneWorld. 20 July 2022 [2022-07-26]. (原始内容存档于2022-07-25).
- ^ carbon-lang/LICENSE. GitHub. 2020-06-16 [2022-07-24]. (原始内容存档于2022-07-24).
- ^ carbon-lang/docs/images/snippets.md at trunk · carbon-language/carbon-lang. GitHub. [16 December 2023] (英语).
外部链接
[编辑]Google自由和开源软件 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| 软件 |
| ||||||||
| 相关 | |||||||||