2 puan yazan GN⁺ 2023-12-07 | 1 yorum | WhatsApp'ta paylaş

Jepsen neden Clojure ile yazıldı?

  • Jepsen, eşzamanlı sistemleri, çoğunlukla veritabanlarını test etmek için geliştirildi.
  • Clojure’un değiştirilemez veri yapıları ve güçlü eşzamanlılık desteği, doğru eşzamanlı programlar yazmayı kolaylaştırır.
  • Çeşitli veritabanı istemcilerini desteklemek gerekir ve Clojure, Java ile iyi bir birlikte çalışabilirlik sunar.

Test için dil seçimi

  • Deneysel test çalışmaları için uygun, özlü ve esnek bir dile ihtiyaç vardır.
  • Clojure, makro sistemi sayesinde özlüdür ve sözdizimsel esneklik sağlar.
  • Karmaşık veri yapılarıyla uğraşan testlerde Clojure’un veri yapıları ve standart kütüphane işlevleri çok uygundur.

Performans ve kararlılık

  • "Yeterince iyi" performansa sahip bir dil gerekir; Clojure, Java’ya kıyasla görece daha yavaş olsa da performans farkı çözülebilir.
  • JVM’in güçlü profilleme araçları Clojure ile iyi uyum sağlar.
  • Clojure, hem JVM hedefi hem de dilin kendisi açısından yüksek kararlılık gösterir; kütüphanelerde hızlı yıpranma daha az görülür.

Dezavantajlar ve karar

  • Clojure’un küçük bir mühendislik topluluğuna sahip olması ve yaygın kabul görmüş statik bir tip sisteminin bulunmaması dezavantajları arasındadır.
  • Jepsen küçük bir ekip tarafından bakım gördüğü ve kullanıldığı için bu dezavantajlar büyük bir sorun oluşturmaz.
  • Jepsen’i Clojure ile prototipledikten sonra verilen kararın oldukça iyi bir ödünleşim olduğu düşünülmektedir.

GN⁺ görüşü

  • Jepsen’in Clojure ile yazılmasının en önemli nedeni, Clojure’un değiştirilemez veri yapıları ve güçlü eşzamanlılık desteği sayesinde karmaşık eşzamanlı veritabanı sistemlerini test etmek için uygun olmasıdır.
  • Bu yazı, yazılım mühendisliği, özellikle de eşzamanlı programlama ve veritabanı sistemleriyle ilgilenen kişiler için ilgi çekici olabilir; ayrıca belirli bir programlama dilinin seçiminin gerçek projeleri nasıl etkileyebileceğine dair pratik bir örnek sunar.

1 yorum

 
GN⁺ 2023-12-07
Hacker News görüşleri
  • Clojure ve ClojureScript’i 10 yıldır kullanan bir kullanıcı, Clojure’un avantajları olarak alan adı kodunu .cljc dosyalarında yazarak hem sunucu hem istemci tarafında derleyebilme, transducer’ların performansı ve yeniden kullanılabilirliği ile Clojure’un kararlılığı ve eski sürümlerle uyumluluğunu vurguluyor.
  • Clojure ekosisteminin sorunları arasında araçların erişilebilirliği ve kullanılabilirliğinin aşırı derecede ayrıştığı, daha kolay araçlar veya framework’ler olsa Clojure’un daha yaygın benimseneceği görüşü öne sürülüyor.
  • 7 yıldır yalnızca Clojure kullanan bir geliştirici, güçlü bir tip sisteminin yokluğunu başlıca şikayeti olarak belirtirken, Clojure’un Ruby ya da Python seven geliştiricilere daha fazla güç sunduğunu düşünüyor.
  • Clojure ve ClojureScript ile geliştirme yapan bir ekip, Clojure’un erişilebilirliği ile REPL iş akışının avantajlarına değiniyor ve küçük projeler ya da görevler için Babashka/nbb kullanmanın faydalı olduğunu söylüyor.
  • Clojure’a yeni başlayan biri, araçların hata durumlarını anlaşılmaz bulduğunu, Clojure ekosistemindeki yenilikçi fikirleri değerli gördüğünü ancak parantez kullanımı ve nil işleme konusunda iyileştirme gerektiğini belirtiyor.
  • Clojure topluluğunda kütüphane kombinasyonlarına yönelik neredeyse doktriner bir isteğin gerçek web geliştirme ekiplerinin çalışma hızını yavaşlatabileceği belirtiliyor ve kullanımı daha kolay bir web framework’üne ihtiyaç olduğu ifade ediliyor.
  • Clojure’un küçük mühendislik topluluğu ve statik tip sisteminin olmaması dezavantaj olarak görülürken, Java ile birlikte çalışabilirliği güçlü yönü olarak değerlendiriliyor.
  • Clojure kullanıcılarından biri, hata mesajları ile tip ipuçlarının yetersizliğine dikkat çekiyor ve büyük ölçekli kod refaktörizasyonunun zorluğundan yakınıyor.
  • Clojure yeni başlayanları için etkileşimli bir eğitim sitesi öneren bir yorum da yer alıyor.
  • Clojure’u sevdiğini ancak karmaşık modern uygulamalarda sonunda ekosistemin belirleyici olduğuna dair bir ders çıkardığını söyleyen bir kullanıcının görüşü paylaşılıyor.