Carbon (programlama dili)

**Carbon,** Google tarafından "C++ Ardıl Dili" olarak oluşturulmuş deneysel bir genel amaçlı programlama dilidir. İlk olarak 2022 yılının Temmuz ayında Carruth Chandler tarafından CppNorth konferansında halka sunuldu. Dil, C++'ın belirlenen çeşitli eksikliklerini düzeltmeyi amaçlar, ancak bunun dışında benzer bir özellik seti de sağlar. Hedeflerinden biri, mevcut C++ kodu ile beraber çift yönlü birlikte çalışabilirliktir. Dil, C++'ın kullandığı ISO sürecinin aksine GitHub üzerinde tasarlanacak ve geliştirilecektir. Dil, Apache Lisansı (Sürüm 2) altında ücretsiz ve açık kaynaklı bir proje olarak geliştirilmiştir.

**Carbon**, GitHub üzerinde açık kaynaklı olarak geliştirilmeye devam ediyor. **Carbon Programlama Dili**'nin geliştirildiği diller ise; C++, Python, Starlark, JavaScript, Shell, HTML ve diğer dillerdir. Aktif olarak (18 Eylül 2022 Tarihinde) 97 geliştirici tarafından katkı sağlanmaktadır.

**Carbon**, resmi olarak "C++'ın deneysel halefi" olarak tanımlanmaktadır. Ancak ne kadar tanımı "halef" olsa da amacı C++ ile birlikte çalışıp, C++'ı daha hızlı, performanslı ve kullanışlı bir konuma getirmektir. Bunu sağlamak için dilde aşağıdaki özellikler bulunmaktadır.

* Bitlere ve adreslere düşük düzeyde erişim ile LLVM kullanarak C++ performans eşleştirme
* Kalıtımdan şablonlara kadar mevcut C++ kodu ile birlikte çalışma
* Mevcut C++ yapı sistemlerinizle çalışan hızlı ve ölçeklenebilir yapılar. Daha güvenli temeller ve bellek açısından güvenli bir alt kümeye doğru artan bir yol

## Carbon Programlama Dili'nin Hedefleri
**Carbon** resmi olarak geliştiriciler tarafından aşağıdakileri desteklemek için tasarlanır;

* Performans açısından kritik yazılım
* Yazılım ve dil gelişimi
* Okunması, anlaşılması ve yazılması kolay kod
* Pratik güvenlik ve test mekanizmaları
* Hızlı ve ölçeklenebilir geliştirme
* Modern işletim sistemi platformları, donanım mimarileri ve ortamları
* Mevcut C++ koduyla birlikte çalışabilirlik ve geçiş

## Carbon Programlama Dili'nin Söz Dizimi
**Carbon** ile bir Merhaba Dünya Programı için aşağıdaki kod bloğu kullanılır:

```rust
fn Main() -> i32 {
    Print("Hello, World!");
    return 0;
}
```
**Carbon,** aşağıdaki C++ kodunu onun da altındaki **Carbon** koduyla karşılar.

```c++
#include <math.h>
#include <iostream>
#include <span>
#include <vector>

struct Circle {
    float r;
};

void PrintTotalArea(std::span<Circle> circles) {
    float area = 0;
    for(const Cirlce& 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 = ;
    //'vector'ü örtük olarak 'span'e dönüştürün
    PrintTotalArea(circles);
    return 0;
}
```
Yukarıdaki C++ kodu, aşağıdaki **Carbon** kodu ile aynı işlevi görür.

```rust
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 {
    var circles: Array(Circle) = ({.r = 1.0},
                                  {.r = 2.0});
    PrintTotalArea(circles);
    return 0;
}
```


## Kaynakça

## Dışa Bağlantılar
* Carbon Language 
* Compiler Explorer'da Carbon (godbolt)