8 puan yazan GN⁺ 2024-03-07 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-03-07
Hacker News görüşleri
  • "düşünce deneyi dili" fikrine duyulan sevgi

    • Gerçek bir dil yapmak büyük bir yük ve ideal bir dilin nasıl görüneceğini düşünmek eğlenceli.
    • "yüksek seviyeli Rust" hakkında çeşitli hayaller var; kişisel olarak dinamik runtime ve basit tipleri tercih ediyorum, ama başkalarının farklı gereksinimleri var.
    • Kademeli tip sistemi gibi ek özellikler bazı dillere uygundur, ancak en baştan tamamen statik tipli bir kod tabanının garantisini tercih ediyorum.
  • "Hello, Dada!" örneğiyle ilgili soru işaretleri

    • Bir Python kullanıcısı olarak, amaç konsola çıktı vermekse neden await ile uğraşmak gerektiğini merak ediyorum.
    • Karmaşıklık ve bilişsel yük şimdiden başlıyor gibi görünüyor.
  • Zıt yöndeki bir dil için istek

    • Rust’ın ifade gücü yüksek tip sistemi ve sözdizimine sahip, ama çöp toplayıcı ve runtime içeren bir dil isteniyor.
    • Performans maliyeti ödemek istenmiyor ve Rust’ın tip sistemine sahip Go benzeri bir dil tercih ediliyor.
  • async/await hakkındaki karşı görüş

    • Yüksek seviyeli dillerde Go’nun green thread yaklaşımının daha uygun olduğu düşünülüyor.
    • Kademeli tipleme ilginç ama zorunlu değil. Statik tipleme yük gibi gelmiyor ve performans hakkında akıl yürütmeyi zorlaştırabiliyor.
    • Kademeli tiplemeden ziyade tip çıkarımının daha iyi olacağı düşünülüyor.
  • Java ve JavaScript benzerliği hissi hakkındaki görüş

    • Java ve JavaScript’in çok farklı hisler verdiğine dikkat çekiliyor.
  • GC olmaması, Rust’ı gömülü sistemlerde keyifli bir deneyim haline getiriyor

    • Diğer programlarla kolayca bağlanabiliyor ve programların hızlı açılması Rust’ın başlıca avantajlarından biri.
    • Çöp toplama eklenmiş bir Rust, bu avantajdan vazgeçmek anlamına gelebilir.
  • Rust kullanma deneyimine dair karışık duygular

    • Bellek güvenliği kalıpları beğeniliyor, ancak C++’a kıyasla sözdizimi daha zorlayıcı hissediliyor.
    • Kodu zihinsel olarak okumak zor geliyor.
    • Daha az dekoratör sihri ve sembol tabanlı sözdizimi, yeni başlayanlar için anlamayı kolaylaştırabilir.
  • Tip anotasyonları eklenirse Rust’a benzer performans alınabileceği iddiasına ilgi

    • JavaScript kadar kolay yazılabilen ve ek çaba haklı olduğunda Rust kadar hızlı olabilen bir dil fikri ilgi çekiyor.
  • Eğitimdeki print_point metodu hakkında kafa karışıklığı

    • async ve await anlamı 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

    • Yeni bir programlama dili yapılırken, açılış sayfasında doğrudan bir "Hello World" sözdizimi örneği verilmesi isteniyor.