- Dada, Rust gibi bir dil yapmayı hedefleyen, ancak Java veya JavaScript gibi hissettiren ve C++'tan daha az karmaşık olan bir düşünce deneyidir.
- Çekirdeklerde veya küçük gömülü cihazlarda kullanılmayı hedeflemeyen, bunun yerine asgari düzeyde çalışma zamanı gerektiren bir dili hayal edersek nasıl görünürdü?
- Dada, sahiplik tabanlı bir dil olarak Rust ile bazı benzerlikler taşır:
- Rust gibi, Dada da bir garbage collector gerektirmez.
- Rust gibi, Dada bellek güvenliğini ve data race olmamasını garanti eder.
- Rust gibi, Dada veri yapıları stack üzerinde ayrılır ve düz bellek yerleşimi kullanır.
- Ancak Dada'nın birçok farklı yönü de vardır:
- TypeScript gibi, Dada kademeli olarak tiplendirilmiş bir dildir:
- Tür notasyonları olmadan yorumlayıcıda Dada kullanarak dilin nasıl çalıştığını anlayabilirsiniz.
- Alıştıktan sonra tür notasyonları ekleyip Rust'a benzer performans sunan bir derleyici kullanabilirsiniz.
- Dada öncelikli olarak WebAssembly'yi hedefler:
- Dada ile native hedefler derlenebilir, ancak FFI sistemi WebAssembly interface types temellidir.
- Dada nesne yönelimlidir, ancak saf bir biçimde değildir:
- Dada, OO ile pattern matching gibi güçlü özellikleri birleştirir ve Scala gibi dillerden ilham alır.
- Rust ile karşılaştırıldığında Dada'nın bazı kısıtları vardır:
- Dada zorunlu bir çalışma zamanına sahiptir ve "bare metal sistemleri" veya çekirdekleri hedeflemez.
- Dada inline assembly veya keyfi unsafe kodu desteklemez.
Dada'nın mevcut durumu nedir?
- Şu anda Dada fiilen var olan bir dil değildir; yalnızca birkaç deneysel prototip bulunmaktadır:
- PLT Redex ile uygulanmış deneysel bir işletim semantiği, dada-lang/dada-model içinde bulunabilir.
- Rust ile yazılmış yorumlayıcı dada-lang/dada deposunda bulunabilir ve Dada playground üzerinden WebAssembly tabanlı derlemeyi deneyebilirsiniz.
GN⁺ görüşü
- Dada, modern programlama dili trendlerini yansıtarak Rust'ın bellek güvenliği ve data race önleme gibi temel özelliklerini korurken, kademeli tipleme ve nesne yönelimli yaklaşım aracılığıyla geliştirici dostu bir dil olmayı hedefliyor.
- WebAssembly'yi ana hedef olarak seçmesi, Dada'nın web tabanlı uygulama geliştirmedeki potansiyelini gösteriyor; bu da tarayıcı uyumluluğu ve platform bağımsızlığına önem veren modern web geliştirme eğilimleriyle örtüşüyor.
- Dada gerçekten geliştirilip yaygın biçimde kullanılırsa, mevcut Rust geliştiricilerine daha yüksek seviyeli soyutlama ve kullanım kolaylığı sunabilir; Java veya JavaScript geliştiricileri içinse sistem programlama dillerine geçişi kolaylaştırabilir.
- Ancak Dada hâlâ çok erken aşamada ve gerçek üretim ortamlarındaki performansı ile kararlılığı doğrulanmış değil; bu nedenle şirketlerin ve geliştiricilerin benimsemeden önce temkinli yaklaşması gerekir.
- Dada ile benzer hedeflere sahip diğer diller arasında Kotlin ve Swift bulunur; bunlar hâlihazırda yaygın olarak kullanıldığından geliştiriciler için iyi alternatifler olabilir.
1 yorum
Hacker News görüşleri
"düşünce deneyi dili" fikrine duyulan sevgi
"Hello, Dada!" örneğiyle ilgili soru işaretleri
awaitile uğraşmak gerektiğini merak ediyorum.Zıt yöndeki bir dil için istek
async/awaithakkındaki karşı görüşJava ve JavaScript benzerliği hissi hakkındaki görüş
GC olmaması, Rust’ı gömülü sistemlerde keyifli bir deneyim haline getiriyor
Rust kullanma deneyimine dair karışık duygular
Tip anotasyonları eklenirse Rust’a benzer performans alınabileceği iddiasına ilgi
Eğitimdeki
print_pointmetodu hakkında kafa karışıklığıasyncveawaitanlamı hakkında daha ayrıntılı açıklama gerekiyor.async/await’in tembel hesaplanan değerler gibi çalışıp çalışmadığı ve çeşitli kombinasyonların tip hatası üretip üretmediği soruluyor.Yeni programlama dillerinin sözdizimi örneklerini bulmaya dair şikayet