e
sv

C++'ın yeni üst kümesi Carbon'u keşfetmek

avatar

Yazılım Method

  • e 0

    Mutlu

  • e 0

    Eğlenmiş

  • e 0

    Şaşırmış

  • e 0

    Kızgın

  • e 0

    Üzgün

C programlama dilinin halefi olan C++, tartışmasız günümüzün en alakalı dillerinden biridir. C++, Python makine öğrenimini, JavaScript kitaplıklarını, oyun geliştirmeyi ve modern programlama dillerinde kullanılan diğer birçok aracı destekler.

Her Grand Challenge için, bir çözüm bulursanız, altta göremediğiniz bir yerde bir miktar C++ bulacaksınız. – Bjarne Stroustrup

C++ aynı zamanda uyarlanabilir tasarımı, çok yönlülüğü ve geniş uyumluluğu ile eski nesne yönelimli programlama dillerinden biridir. C++, Java gibi daha yeni dillere ilham vererek, dili oyunlar, tıbbi cihazlar, yapay zeka ve kontrol sistemleri ve diğer birçok uygulama geliştirmek için uygun hale getirdi.

Rust ve Golang gibi birçok modern programlama dili ortaya çıktı ve geliştiricilerin öncekilerden daha az güçlükle ve esnek bir şekilde temiz, güvenli kod yazmasına izin verdi. Bununla birlikte, eski programlama dilleri, günlük hayatımızda çalışan birçok kod tabanına hala güç sağlamaktadır.

Ayrıca, C/C++ gibi daha eskilere çözümler sunan programlama dillerinin ortaya çıktığını gördük. Günümüz dünyasında bunlar JavaScript, TypeScript, Objective-C, Swift, Java ve Kotlin'dir.

Yakın zamanda sonuçlandırılan CPP North konferansında Google, C++ için bir halef üzerinde çalıştıklarını duyurdu: Karbon programlama dili. Bu yazıda, Carbon'un ne olduğunu, özelliklerini, C++'dan nasıl farklı olduğunu, nasıl kurulacağını ve daha fazlasını gözden geçireceğiz.

Başlayalım!

Karbon nedir?

C++ içinde, çıkmak için mücadele eden çok daha küçük ve daha temiz bir dil var. – Bjarne Stroustrup

Carbon, başlangıçta Google tarafından C++'ı başarmak için oluşturulmuş, açık kaynaklı, statik olarak yazılmış, derlenmiş bir programlama dilidir. Carbon, geliştiricilere jenerikler, modüler kod organizasyonu ve basit sözdizimi gibi modern programlama uygulamaları sunar.

Carbon, C++'ın performansına ve ölçeklenebilirliğine uymayı umuyor. Dil, geçiş ve benimseme için C++ ile çift yönlü birlikte çalışabilirlik için tasarlanmıştır. Bu, mevcut C++ kitaplıklarını kullanmanın yanı sıra, C++ kod tabanlarını Carbon'a aktarabileceğiniz ve bunun tersi anlamına gelir.

Carbon ayrıca çok arkadaş canlısıdır ve mevcut yazılım tasarımı ve mimarisi için daha fazla ifade ve destek sunan C++ geliştiricileri için yumuşak bir öğrenme eğrisine sahiptir.

Karbon hala bir deney ve geliştirme aşamasında. Bununla birlikte, seveceğiniz Carbon kodunu yazmanıza yardımcı olacak birçok özellik henüz eklenmedi.

Carbon programlama dilinin özellikleri

Carbon, C++ ile bazı güçlü benzerlikleri paylaşır. Modern programlama uygulamaları, C++ desteği, birlikte çalışabilirlik, bellek güvenliği ve jeneriklerle aşılanmıştır. Bunlar, Carbon programlama dilinin dikkate değer birkaç özelliğidir ve şimdi bazılarının üzerinden geçeceğiz.

birlikte çalışabilirlik

Mantıksal olarak, Carbon gibi bir ardıl dilin önceki dille uyumlu olması gerekir. Carbon, C++ ile çift yönlü (iki yönlü) uyumludur ve dillerden herhangi birini diğeriyle kullanabilirsiniz. Birlikte çalışabilirliğine bir göz atalım:

 // Carbon programlama dilinin yazarlarının kaynak kodu

// Hem Carbon hem de C++'da kullanılan C++ kodu:
yapı Çember {
  yüzer r;
};

// C++ için bir işlevi açığa çıkaran karbon:
paket Geometri api;
Cpp kitaplığını içe aktar "circle.h";
Matematik içe aktar;

fn PrintTotalArea(daireler: Slice(Cpp.Circle)) {
  var alan: f32 = 0;
  for (c: Daireler içinde Cpp.Circle) {
    alan += Math.Pi * cr * cr;
  }
  Print("Toplam alan: {0}", alan);
}

Yukarıdaki örnekte, Carbon kodu bir dairenin alanını yazdırmak circle.h C++ kitaplığını kullanır.

 // Carbon programlama dilinin yazarlarının kaynak kodu

// C++, Carbon'u çağırıyor:
#include <vektör>
#include "circle.h"
#include "geometry.carbon.h"

auto main(int argc, char** argv) -> int {
  std::vector<Daire> daireler = {{1.0}, {2.0}};
  // Carbon'un "Dilim"i, "std::vector"dan örtük yapıyı destekler,
  // `std::span` ile benzer.
  Geometri::PrintTotalArea(daireler);
  0 döndür;
}

Yukarıdaki C++ kodu, sağlanan parametrelerle bir dairenin alanını yazdırmak için geometry.carbon.h kitaplığını kullanır. Carbon kodunun nasıl daha okunaklı ve sezgisel olduğuna dikkat edin.

Modern jenerik sistemi

Jenerikler, Rust ve Go gibi modern programlama dillerinde bulacağınız birçok harika özellikten biridir. Carbon, mevcut C++ koduyla sorunsuz birlikte çalışabilirlik için kontrol edilen tanımları ve tercihli şablonları olan modern bir jenerik ilaç sistemine sahiptir.

Carbon'un genel sistemi, dikkat edilmesi gereken bir sistemdir. Derleme zamanında tanım kontrollerinin maliyetinden kaçınmak için genel tanımlar için tür kontrolleri sağlayacaktır. Ayrıca, uygulamadaki tesadüfi bağımlılıkları azaltmak ve önemli açık sözleşmeler oluşturmak için sağlam kontrol edilmiş arayüzler sağlayacaktır.

Bellek güvenliği iyileştirmeleri

Bellek güvenliği, C++ kullanmanın büyük bir görev noktasıdır. Carbon, başlatılmamış durumları izleyerek, başlatma zorlamalarını artırarak ve başlatma hatalarını caydırarak bellek güvenliğini ele almayı amaçlar.

Carbon, hata ayıklamada dinamik sınır denetimlerini desteklemek için temel API'leri ve deyimleri içerecek. Ayrıca kapsamlı bir varsayılan hata ayıklama moduyla sağlamlaştırılmış yapıları da destekleyecektir. Carbon'un güvenlik stratejisi, bazı garantili bellek güvenliği programlama modellerini de içerebilir.

Carbon programlarını, bellek güvenliği tercihinize bağlı olarak hata ayıklama, performans ve sertleştirilmiş modlarda çalıştırabilirsiniz. GitHub belgelerinde Carbon'un güvenlik stratejisi hakkında daha fazla bilgi edinebilirsiniz.

Karbon ve C++

Carbon yeni olduğundan ve dil üretime hazır olmadığından, Carbon'u yalnızca paylaşılan özelliklerine göre C++ ile karşılaştırabilirsiniz. C++ bir süredir var ve geliştiriciler dile ilişkin hayal kırıklıklarını paylaşabildiler. Umarım Carbon, TypeScript'in JavaScript için yaptığı gibi sayısız C++ sorununu en aza indirecektir.

İşte Carbon ve C++ arasında kısa bir karşılaştırma:

Karbon
C++
Nesne yönelimli _
Evet
Evet
öğrenme eğrisi _
Nazik
törpülemek zor _
dışavurumculuk
çok etkileyici _
pek etkileyici _
Tip sistemleri _
Kesinlikle yazılan ; s statik olarak yazılan
Kesinlikle yazılan ; Statik olarak yazılan
Jeneriklerin desteği _
Evet
Şablonlar ; G enerics'e benzer _

Özellikle C++'ın durumu ve dilin arkasındaki şirket göz önüne alındığında, Carbon'un C++'ı başarılı bir şekilde geçme olasılığı bence nispeten yüksek. Ayrıca, her iki dil arasındaki çift yönlü birlikte çalışabilirlik göz önüne alındığında, geliştiricilerin mutlaka C++ özelliklerini kaçırması gerekmeyecektir.

Go ve Dart, amaçlanan alanlarda büyük ölçüde benimsendiğini gördü ve Carbon oldukça başarılı olabilir.

Carbon'u kullanmaya başlama

Karbon hala deneysel modda olduğundan dil üretime hazır olmaktan uzak. Ancak yine de dilin mevcut durumuyla oynayabilir ve gelişimine katkıda bulunmayı düşünebilirsiniz!

Şimdi, kod tabanını kontrol etmek ve dille oynamak için Carbon'un gezginini nasıl kullanabileceğinizi gözden geçireceğiz.

Karbon Kurulumu

Öncelikle bilgisayarınızda Homebrew'in kurulu olması gerekir. Homebrew'i Linux ve macOS'a kurmak için bu kurulum talimatlarına göz atabilirsiniz .

Homebrew paket yöneticisi ile Bazelisk'i kurarak başlayın:

 demlemek bazelisk yükleyin

Ardından, llvm kurun ve PATH değişkenini dışa aktarın:

 demlemek llvm yükleyin
dışa aktar PATH="$(brew --prefix llvm)/bin:${PATH}"

Carbon deposunu klonlayın ve makinenizdeki dizinine gidin:

 git klonu https://github.com/carbon-language/carbon-lang
cd karbon dili

Son olarak, Carbon gezgini oluşturun ve çalıştırın:

 bazel çalıştırma //explorer -- ./explorer/testdata/print/format_only.carbon

Ve bu kadar! Artık Carbon ile deney yapmaya ve dilin nasıl çalıştığını kontrol etmeye başlayabilirsiniz.

Carbon'un sözdizimine genel bakış

Carbon'un sözdizimi aslında Rust'ın ve diğer birkaç dilin sözdizimine oldukça benzer. Değişkenler, döngüler, koşullar, işlevler ve sınıflar dahil olmak üzere Carbon'un sözdizimine genel bir bakış atalım.

Karbondaki Değişkenler

Değişkenleri var anahtar kelimesi ile tanımlayabilirsiniz. Carbon statik olarak yazılmıştır, bu nedenle bir veri türü belirtmeniz gerekir.

 var merhaba: auto = "Merhaba dünya!";

auto veri türü, herhangi bir değişken üzerinde kullanabileceğiniz genel bir veri türüdür. Tıpkı C++ gibi, her ifade noktalı virgülle bitmelidir.

Carbon'daki döngüler için

Carbon, bir dizi döngü işlevi dahil olan döngüler için c stili kullanır.

 for (var name: İsimlerdeki dize) { // isimler bir dizidir
    Yazdır(isim);
}

for döngüsü bir dizi üzerinde yinelenir ve dizinin öğelerini yazdırır.

Karbondaki Fonksiyonlar

Carbon'un işlevleri, parametre değişkenlerini açıkça belirtmeniz dışında, Rust'ın işlevlerine çok benzer.

 fn Sum(var a: i32, var b: i32) -> i32 {
    a + b'yi döndür;
}

Topla işlevi, çağrıdaki bağımsız değişkenlerin Sum döndürür.

Karbonda Koşullar

Carbon ayrıca c tarzı koşullu ifadeleri kullanır.

 fn check(var değeri: i32) -> i32 {
  if(değer == 7) {
    Yazdır(değer);
  } başka {
    Yazdır (0);
  }
}

check işlevi, bağımsız değişken girişinin 7 eşit olup olmadığını kontrol eder ve varsa value yazdırır veya if ifadesi geçersizse 0 yazdırır.

Karbon Sınıfları

Carbon, sınıfları tanımlayıcıları ve herhangi bir türdeki alanlarla tanımlamak için bir anahtar kelime sağlar.

 sınıf İnsan {
  var phone: i32;
  değişken yaş: i32;
  var name: String;
}

Human sınıfında phone , age ve name alanları bulunur. İşlemleriniz için istediğiniz sayıda alan bildirebilirsiniz.

Carbon'un geleceğine bakmak

Google ve Carbon ekipleri, Carbon'u modern işletim sistemleri, donanım ve ortamlarda çalışan performans açısından kritik yazılımları geliştiren ve destekleyen hızlı, ölçeklenebilir bir dil olarak öngörüyor. Carbon ayrıca dil için geriye veya ileriye uyumluluğa ve kararlı bir uygulama ikili arabirimine (ABI) doğru yol alacaktır.

Carbon'un deneysel ancak çalışan bir sürümünün 2022'nin sonunda halka açılması planlanıyor ve tam sürüm 2024-2025'e kadar mevcut olacak. Dil hedeflerine ilişkin ayrıntılı bir genel bakışa göz atabilirsiniz.

Çözüm

Bu makalede, Carbon'a ve özelliklerine genel bir bakış sunduk, Carbon'u selefi C++ ile karşılaştırdık, Carbon'un nasıl kurulacağına ve sözdiziminin nasıl çalıştığına baktık ve Carbon'un gelecekte nereye gitmeyi umduğuna baktık.

Carbon, dili geliştirmek için pil içeren bir yaklaşım benimsiyor. Depo, herkesin seveceği bir C++ halefi oluşturmaya yönelik tartışma ve geliştirmeye katkıda bulunabileceğiniz GitHub'da yayında.

C++'ın yeni üst kümesi olan Exploring Carbon yazısı ilk olarak LogRocket Blog'da yayınlandı.

etiketlerETİKETLER
Üzgünüm, bu içerik için hiç etiket bulunmuyor.

Sıradaki içerik:

C++'ın yeni üst kümesi Carbon'u keşfetmek