- Üç dilin felsefe ve değer anlayışlarındaki farklar odağa alınarak, her birinin hangi sorunları çözmeye çalıştığı karşılaştırılıyor
- Go, sadelik ve istikrarı önceleyen; özellikleri minimumda tutarak iş birliği ve bakımı kolaylaştıran bir dil olarak açıklanıyor
- Rust, güvenlik ve performansı aynı anda hedefliyor; karmaşık tür sistemi ve trait yapısıyla bellek güvenliğini garanti ediyor
- Zig, manuel bellek yönetimi ve veri odaklı tasarım yoluyla geliştiriciye tam kontrol veren deneysel bir dil olarak tasvir ediliyor
- Üç dilin birbirine zıt yaklaşımları, programlama dillerinin hayata geçirdiği değer sistemlerini ortaya koyuyor; seçim ölçütü de geliştiricinin hangi felsefeye yakınlık duyduğu oluyor
Dil karşılaştırısına bakış
- Yazar, işte kullandığı dillerden ziyade, yeni dil denemeleri üzerinden her dilin değer sistemini anlamaya çalışıyor
- Yalnızca özellik listelerini kıyaslamak yerine, dilin hangi ödünleşimleri seçtiğinin önemli olduğunu vurguluyor
- Go, Rust ve Zig işlevsel olarak birçok ortak noktaya sahip olsa da, tasarımcılarının öncelik verdiği değerler farklı
- Her dilin felsefesini kavrayarak, hangi ortam ve amaçlar için uygun olduğuna karar vermek mümkün
Go — sadelik ve iş birliği odaklı dil
- Go, minimalizmiyle ayrışıyor ve “tüm dili kafanda tutabilirsin” özelliğine sahip
- Generics ancak 12 yıl sonra eklendi; tagged union ya da hata işleme için sözdizimsel şeker gibi özellikler hâlâ yok
- Yeni özellik ekleme konusunda çok temkinli; bu yüzden boilerplate kod fazla olsa da dilin istikrarı ve okunabilirliği yüksek
- Go’daki slice, Rust’ın
Vec<T> ya da Zig’in ArrayList işlevlerini kapsıyor; bellek konumunu çalışma zamanında sistem otomatik yönetiyor
- C++’ın karmaşıklığı ve yavaş derleme sürelerine duyulan tepkiyle yola çıkıp, basit ve hızlı derleme hedefiyle tasarlanmış
- Kurumsal ortamlarda iş birliği verimliliğini önemser; karmaşık özelliklerden çok açık kodu ve tutarlılığı öne koyar
Rust — karmaşık ama güçlü güvenlik ve performans
- Rust, “sıfır maliyetli soyutlama” söylemini benimseyen, çok sayıda kavramı bir araya getiren maksimalist bir dil
- Öğrenmesinin zor olmasının nedeni kavramsal yoğunluğunun yüksek olması; karmaşık bir tür sistemi ve trait yapısı bulunuyor
- Rust’ın temel hedefi, performans ile bellek güvenliğini birlikte sağlamak
- UB (Undefined Behavior) önlemek için derleme zamanında doğrulama yapıyor
- Hatalı pointer referansları veya çift serbest bırakma gibi durumların yol açtığı öngörülemez davranışları engelliyor
- Derleyicinin kodun çalışma zamanı davranışını anlayabilmesi için geliştiricinin türleri ve trait’leri açıkça tanımlaması gerekiyor
- Bu yapı sayesinde başkalarının koduna duyulan güven artıyor ve kütüphane ekosistemi canlı kalıyor
Zig — tam kontrol ve veri odaklı tasarım
- Zig, üç dil arasında en yeni dil; 0.14 sürüm aşamasında ve standart kütüphane belgeleri neredeyse yok
- Manuel bellek yönetimi benimsiyor; geliştiricinin doğrudan
alloc() çağırması ve allocator seçmesi gerekiyor
- Rust veya Go’dan farklı olarak, global değişken oluşturmak kolay; çalışma zamanında “illegal behavior” tespit edildiğinde program durduruluyor
- Derleme sırasında seçilebilen 4 farklı release modu ile performans ve güvenlik dengesi ayarlanabiliyor
- Nesne yönelimli programlama (OOP) özellikleri bilinçli olarak dışarıda bırakılmış
- private alanlar veya dynamic dispatch yok;
std.mem.Allocator bile arayüz olarak uygulanmıyor
- Bunun yerine veri odaklı tasarım (data-oriented design) yaklaşımı benimseniyor
- Bellek yönetiminde de RAII tarzı ayrıntılı nesne bazlı yönetim yerine, büyük bellek bloklarının periyodik olarak ayrılıp serbest bırakıldığı bir yapı öneriliyor
- Zig, özgür ve karşı-kültürel eğilimleri olan bir dil gibi betimleniyor; OOP düşüncesini ayıklayıp geliştirici odaklı kontrolü en üst düzeye çıkarıyor
- Ekip şu anda tüm bağımlılıkları yeniden yazma çalışmalarına odaklanmış durumda; kararlı sürüm (1.0) içinse henüz bir tarih yok
Sonuç — dillerin ortaya koyduğu değer farkları
- Go’nun merkezinde iş birliği ve sadelik, Rust’ın merkezinde güvenlik ve performans, Zig’in merkezinde ise özgürlük ve kontrol var
- Üç dil arasındaki fark, basit bir özellik karşılaştırmasından çok, yazılım geliştirmeye dair felsefi bir tercihi yansıtıyor
- Geliştiriciler dili, hangi değerlere yakınlık duyduklarına göre seçiyor
Henüz yorum yok.