Английская Википедия:Carbon (programming language)
Шаблон:Use dmy dates Шаблон:Infobox programming language
Carbon is an experimental programming language designed for interoperability with C++.[1] The project is open-source and was started at Google. Google engineer Chandler Carruth first introduced Carbon at the CppNorth conference in Toronto in July 2022. He stated that Carbon was created to be a C++ successor.[2][3][4] The language is expected to have an experimental MVP version 0.1 in 2025 and a production-ready version 1.0 after 2027.[5]
The language intends to fix several perceived shortcomings of C++[6] but otherwise provides a similar feature set. The main goals of the language are readability and "bi-directional interoperability" (which allows the user to include C++ code in the Carbon file), as opposed to using a new language like Rust, that, while being influenced by C++, is not two-way compatible with C++ programs. Changes to the language will be decided by the Carbon leads.[7][8][9][10]
Carbon's documents, design, implementation, and related tools are hosted on GitHub under the Apache-2.0 license with LLVM Exceptions.[11]
Example
The following shows how a program might be written in Carbon and C++:[12]
Carbon | C++ |
---|---|
package Geometry api;
import Math;
class Circle {
var r: f32;
}
fn PrintTotalArea(circles: Slice(Circle)) {
var area: f32 = 0;
for (c: Circle in circles) {
area += Math.Pi * c.r * c.r;
}
Print("Total area: {0}", area);
}
fn Main() -> i32 {
// A dynamically sized array, like `std::vector`.
var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
// Implicitly converts `Array` to `Slice`.
PrintTotalArea(circles);
return 0;
} |
#include <math.h>
#include <iostream>
#include <span>
#include <vector>
struct Circle {
float r;
};
void PrintTotalArea(std::span<Circle> circles) {
float area = 0;
for (const Circle& c : circles) {
area += M_PI * c.r * c.r;
}
std::cout << "Total area: " << area << "\n";
}
auto main(int argc, char** argv) -> int {
std::vector<Circle> circles = {{1.0}, {2.0}};
// Implicitly converts `vector` to `span`.
PrintTotalArea(circles);
return 0;
}
|
See also
References
External links
Шаблон:Google FOSS Шаблон:Google LLC
- ↑ Шаблон:Cite web
- ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокcppnorthkeynote-sched
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокcppnorthkeynote-video
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокcppnorthkeynote-9to5google
не указан текст - ↑ Шаблон:Citation
- ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокdifficulties improving cpp
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокc1
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокc2
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокc3
не указан текст - ↑ Ошибка цитирования Неверный тег
<ref>
; для сносокc4
не указан текст - ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- Страницы с ошибками в подсветке синтаксиса
- Английская Википедия
- Programming languages
- Statically typed programming languages
- Cross-platform software
- Object-oriented programming languages
- Programming languages created in 2022
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Английской Википедии
- Страницы с ошибками в примечаниях