10 puan yazan xguru 2023-11-18 | 3 yorum | WhatsApp'ta paylaş
  • Eşzamanlı yazılımları kolayca geliştirmeyi sağlar; öngörülemeyen performans, çalışma zamanı hataları, veri yarışları ve tip hataları konusunda endişe duymadan geliştirme yapılabilir
  • Otomatik bellek yönetimi, move semantics, statik tipleme, tip güvenli eşzamanlılık ve verimli hata işleme gibi özellikler sunar

Deterministik otomatik bellek yönetimi

  • Inko, garbage collection'a bağlı kalmadan tek sahiplik ve move semantics temelli bir bellek yönetimi kullanır
  • Sahip olunan değerler kapsam dışına çıktığında silinir ve değiştirilemez ya da değiştirilebilir olarak ödünç alınabilir
  • Tek sahiplik kullanımı, öngörülebilir davranış ve performans sağlar; garbage collection ayarlarıyla zaman kaybettirmez

Inko güvenlidir

  • Inko ile NULL pointer, use-after-free, çalışma zamanı hataları ve veri yarışları gibi diğer dillerde sık görülen hatalar konusunda endişe etmeniz gerekmez
  • Opsiyonel veriler için Option tipi sağlar ve değiştirilemez ile değiştirilebilir referansları destekleyerek gerektiğinde değişikliği sınırlamanıza olanak tanır

Eşzamanlılığı kolaylaştırır

  • Inko, eşzamanlılığı hafif süreçlerle uygular ve Erlang ile Pony'den ilham alan bir eşzamanlılık modeli kullanır
  • Süreçler birbirinden izole edilir ve mesajlar üzerinden iletişim kurar; derleyici ise tip denetimiyle doğruluğu garanti eder
  • Süreçler arasında veri aktarılırken verinin benzersizliği garanti edilir, böylece veri yarışı imkânsız hale gelir

Hata işlemeyi doğru yapar

  • Inko, Joe Duffy'nin "The Error Model" makalesinden ilham alan bir hata işleme yaklaşımı kullanır
  • Hatalar "Result" adlı bir cebirsel tip ile ifade edilir ve try ile throw üzerinden sözdizimsel sadeleştirme sunar
  • Ele alınamayan veya ele alınmaması gereken kritik hatalar için programı durduran "panics" desteği sunar

Verimlidir

  • Inko, C veya Rust gibi düşük seviyeli dillerle rekabet etmekten ziyade Ruby, Erlang ve Go gibi dillere çekici bir alternatif olmayı hedefler
  • LLVM'i arka uç olarak kullanan yerel kod derleyicisi kullanır ve hızlı derleme süreleri ile iyi çalışma zamanı performansı arasında denge sunar
  • Yerel kod, süreç zamanlaması ve non-blocking IO gibi işleri yöneten, Rust ile yazılmış küçük bir çalışma zamanı kütüphanesine statik olarak bağlanır

Desen eşleme

  • Inko, tuple'lar ve cebirsel veri tipleri dahil çeşitli tipler için desen eşlemeyi destekler
  • Desen eşleme bir karar ağacına derlenir ve derleyici mümkün olduğunca küçük boyutu korumaya çalışır
  • Derleyici, tüm desenlerin kapsandığını garanti eder

3 yorum

 
ahwjdekf 2023-11-18

rust ile rust'a benzeyen bir şey yapmışlar ??

 
regentag 2023-11-18

Paket yönetiminin GitHub'a bağımlı olması pek hoş değil. İnternete bağlanılamayan ortamlar da biraz düşünülse iyi olurdu…

 
xguru 2023-11-18
Hacker News görüşleri
  • Inko'nun eşzamanlılık modeli Erlang ve Pony'den ilham alıyor ve hafif süreçler kullanıyor.

    • Süreçler birbirinden yalıtılmış durumda ve mesajlar aracılığıyla iletişim kuruyor.
    • Süreçler ve mesajlar sınıflar ve metodlarla tanımlanıyor; derleyici ise tip denetimiyle doğruluğu garanti ediyor.
    • Veriler süreçler arasında tekil olarak aktarılıyor; bu da veri yarışlarını imkansız hale getirirken derin kopyalama ihtiyacını ortadan kaldırıyor.
    • Çoklu üretici ve çoklu tüketici kanallarını destekliyor; böylece süreçler arasında açık referanslar olmadan iletişim mümkün oluyor.
  • Inko paketi eklemek için bir GitHub deposu oluşturmak gerekiyor.

    • Inko'nun paket yöneticisi GitLab gibi diğer Git depolarını da destekliyor, ancak listeleme GitHub depoları kullanılarak yapılandırılıyor.
    • Topluluğun Microsoft ürünlerine ve Git'e bağımlı hale gelme eğilimi konusunda endişe dile getiriliyor.
  • Inko ile ilgili tartışma bağlantıları paylaşılıyor:

    • "Show HN: Inko 0.10.0 – build concurrent software with confidence" (Eylül 2022, 3 yorum)
    • "Inko 0.5.0 released, featuring the first steps towards a self-hosting compiler" (Eylül 2019, 7 yorum)
    • "Inko (a gradually-typed object-oriented programming language) 0.4.0 released" (Mayıs 2019, 1 yorum)
    • "Show HN: Inko – A safe and concurrent object-oriented programming language" (Ağustos 2018, 45 yorum)
  • Rust ile benzerliği hakkında soru işaretleri dile getiriliyor:

    • Inko'nun Rust'a yeterince benzediği ve bu durumda neden Rust yerine Inko'nun tercih edilmesi gerektiği soruluyor.
    • Rust'ta zor ya da uğraştırıcı olan hangi programların Inko'da kolayca yazılabileceğine dair örnekler isteniyor.
  • Inko'ya ilgi ve onun Golang gibi olmasına dair bir temenni ifade ediliyor:

    • Inko'nun GitLab'da başlamış gibi göründüğü, Golang gibi olmasının istendiği ve bunun için GC'nin gerekli olduğundan bahsediliyor.
    • Gleam'den hangi yönleriyle ayrıştığı ve JVM ekosisteminden nasıl yararlanabileceği merak ediliyor.
  • Inko adının Telugu dilinde "bir tane daha" anlamına geldiğine dair eğlenceli bir bilgi paylaşılıyor.

  • Rust ile sözdizimsel farklar tartışılıyor:

    • Rust ve Inko arasındaki sözdizimsel farklara dair ayrıntılı bir karşılaştırma yapılıyor.
    • Fonksiyon tanımları, generics gösterimi gibi küçük farklara değiniliyor.
  • Inko'nun tasarım kararları olumlu değerlendiriliyor:

    • C/Java ailesi dillere benzer sözdizimi sayesinde birçok kişi için tanıdık geliyor.
    • Hata işleme bölümünün adlandırılmasına dair soru işaretleri dile getiriliyor.
  • Önceden derlenmiş binary'lere ihtiyaç olduğundan söz ediliyor:

    • LLVM sorunları nedeniyle derleme zorluğu yaşandığı ve bunun Inko'ya olan ilginin düşük kalmasına yol açtığı belirtiliyor.
  • İlgili tartışma bağlantılarına ek olarak yer veriliyor.