Kontentke ótiw

Carbon (programmalastırıw tili)

Wikipedia — erkin enciklopediya
Carbon
Carbon nıń GitHub shólkemindegi logotipi
Shańaraǵı C
Dúziwshi Google
Tiplestiriw tártibi Statikalıq, nominativ, bólek shıǵarılǵan
Implementaciya tili C++
Licenziya Apache-2.0-with-LLVM-Exception
Fayl keńeytpeleri .carbon
Veb-saytı github.com/carbon-language

CarbonC++ penen baylanısıw ushın tayarlanǵan eksperimental programmalastırıw tili[1]. Joybar ashıq kodlı bolıp, Google-de baslanǵan. Google baǵdarlamashısı Chandler Karrut Carbon-dı birinshi ret 2022-jıldıń iyul ayında Torontodaǵı CppNorth konferenciyasında tanıstırdı. Ol Carbon-nıń C++ miyrasxorı sıpatında jaratılǵanın ayttı. Tildiń eksperimental MVP 0.1 versiyası eń erte 2026-jıldıń aqırında, al óndiriske tayar 1.0 versiyası 2028-jıldan keyin shıǵıwı kútilmekte[2].

Bul til C++-tiń bir qatar kemshiliklerin dúzetiwge qaratılǵan, biraq basqa jaǵınan uqsas funkciyalar toplamın usınadı. Tildiń tiykarǵı maqsetleri - oqıwǵa qolaylılıq hám «eki tárepleme úylesimlilik» (bul paydalanıwshıǵa Carbon faylına C++ kodın qosıwǵa múmkinshilik beredi). Bul C++-ten tásirlengen, biraq C++ programmaları menen eki tárepleme úylesimli bolmaǵan Rust sıyaqlı jańa tildi paydalanıwǵa qarama-qarsı. Tilge kirgiziletuǵın ózgerisler Carbon basshıları tárepinen sheshiledi.

Carbon-nıń hújjetleri, dizaynı, ámelge asırılıwı hám baylanıslı quralları GitHub-ta Apache-2.0 licenziyası astında LLVM qosımshaları menen jaylastırılǵan[3].

Mısal

Tómende programmanıń Carbon hám C++ tillerinde qalay jazılıwı múmkin ekenligi kórsetilgen[4]:

Carbon C++
package Geometry;
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("Ulıwma maydan: {0}", area);
}
fn Main() -> i32 {
// Dinamikalıq ólshemli massiv, std::vector sıyaqlı.
var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0});
// Array-dı Slice-ke implicit túrde ózgertedi.
PrintTotalArea(circles);
return 0;
}
import std;

struct Circle {
 std::float32_t r;
};

void PrintTotalArea(std::span<Circle> circles) {
 std::float32_t area = 0;
 for (const Circle& c : circles) {
 area += std::numbers::pi * c.r * c.r;
 }
 std::print("Ulıwma maydan: {}\n", area);
}

int main() {
 std::vector<Circle> circles{{.r = 1.0}, {.r = 2.0}};
 // `vector`-dı `span`-ǵa implicit túrde ózgertedi.
 PrintTotalArea(circles);
 return 0;
}

Derekler

  1. «README». — „"It is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers."“. Qaraldı: 6-sentyabr 2023-jıl.
  2. Carbon Language: Roadmap, 2024-01-11, qaraldı: 2024-01-18 {{citation}}: Unknown parameter |publisher= ignored (járdem)
  3. «carbon-lang/LICENSE». GitHub (16-iyun 2020-jıl). Qaraldı: 24-iyul 2022-jıl.
  4. «carbon-lang/docs/images/snippets.md at trunk · carbon-language/carbon-lang» (en). GitHub. Qaraldı: 16-dekabr 2023-jıl.