4 puan yazan GN⁺ 2024-05-01 | 1 yorum | WhatsApp'ta paylaş

Borgo programlama diline giriş

  • Go'dan daha ifade gücü yüksek ama Rust kadar karmaşık olmayan bir uygulama geliştirme dili isteniyor
    • Go basit ve sezgisel, ancak zaman zaman daha fazla tip güvenliği sunması isteniyor
    • Rust ile çalışmak iyi hissettiriyor (en azından tek iş parçacıklı kod için), ancak fazla kapsamlı ve karmaşık, bazen de yorucu
  • Borgo, Go'ya transpile edilen yeni bir dil ve mevcut Go paketleriyle tamamen uyumlu
  • Borgo sözdizimi, noktalı virgülün isteğe bağlı olduğu Rust'a benziyor

Başlıca özellikler

  • Cebirsel veri tipleri ve desen eşleştirme
  • nil yerine Option kullanımı
  • Birden çok dönüş değeri yerine Result kullanımı
  • ? operatörüyle hata işleme

Yerelde çalıştırma

  • Borgo Rust ile yazıldığı için cargo gerekiyor
  • Geçerli klasördeki tüm .brg dosyalarını derlemek için:
    • $ cargo run -- build
  • Derleyici .go dosyaları üretir ve bunlar normal şekilde çalıştırılabilir

GN⁺ görüşü

  • Rust güçlü bir dil, ancak öğrenme eğrisi dik ve benimseme eşiği yüksek; Borgo ise Rust'ın avantajlarını Go ekosisteminde kullanmayı mümkün kılan ilginç bir deneme gibi görünüyor. Ancak henüz erken aşamada olduğu için ekosisteminin zayıf olması beklenebilir
  • Option ve Result ile nil ve hata işlemenin iyileştirilmesi, ? operatörüyle hata yönetiminin kolaylaştırılması gibi noktalar, Go geliştiricilerinin sıkça rahatsız olduğu alanları hafifletebilir gibi görünüyor
  • Mevcut Go kütüphanelerini aynen kullanabilmek büyük bir avantaj. Ancak Rust sözdiziminin ödünç alınmış olması nedeniyle Go geliştiricilerinin buna alışması zaman alabilir
  • Transpile yaklaşımı nedeniyle hata ayıklama veya çalışma zamanı performansı gibi alanlarda yerel Go koduna kıyasla dezavantajlı olma ihtimali var. Büyük ölçekli production koda uygulamak için henüz erken olabilir
  • Kotlin'in JVM ekosisteminde payını artırması gibi, Borgo'nun da Go için bir çözüm haline gelebilmesi adına kod kalitesi, geliştirme verimliliği ve öğrenme eğrisi gibi birçok alanda sürekli iyileşmeye ihtiyacı var gibi görünüyor. Gelişimini sürdürürse Go dünyasında cazip bir alternatif olabilir

1 yorum

 
GN⁺ 2024-05-01
Hacker News görüşleri

Özet:

  • Go dilinin eksiklerini tamamlayan Borgo dili hakkında olumlu tepkiler
    • Enum, Optional türü gibi Go’da eksikliği hissedilen özellikler eklenmiş
    • Go geliştiricilerinin istediği özelliklerin çoğu yer alıyor
  • Borgo’nun bazı tasarım kararları, Go’nun özelliklerinden çok Rust’ı andırıyor
    • impl ile metot tanımı, kanal ve goroutine söz dizimi, zeroValue() yerleşik fonksiyonu vb.
    • Buna rağmen Go yerine Borgo ile geliştirme yapmayı tercih edeceklerini söyleyenler var
  • Benzer denemeler yapmış diğer projelere de değiniliyor
    • braid, have, oden gibi Go’ya transpile edilen diller üretme girişimleri vardı
  • Rust’ın güçlü yanlarından biri olan Borrow Checker dışında, tür sistemi ve hata yönetimi gibi avantajlarını almış gibi görünüyor
  • Dinamik tipleme ile statik tiplemenin avantajlarını bir arada sunan bir dil olsa iyi olurdu görüşü de var
    • Geliştirmenin başında Python gibi dinamik tiplemenin rahatlığını sunup, sonrasında aşamalı olarak statik tiplemeye geçebilmek isteniyor
  • Go’nun runtime’ı ve araç ekosisteminin avantajlarına, Rust’taki Enum benzeri tür güvenliği eklenmiş gibi bir izlenim veriyor
  • Struct alan görünürlüğünü büyük/küçük harfle ayıran Go yaklaşımı yerine pub/private anahtar kelimelerinin getirilmesi de olumlu karşılanmış
  • Gleam diline benzer şekilde tür güvenliği ile karmaşıklık arasında bir denge bulunmuş gibi, ancak Erlang veya JS yerine Go’ya derlenmesi performans açısından avantaj sağlıyor
    • Yine de derleme hata mesajlarının Rust ya da Gleam kadar anlaşılır olup olmayacağı konusunda soru işaretleri var