Kontentke ótiw

Carbon (programmalastırıw tili)

Wikipedia — erkin enciklopediya

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.