2 puan yazan GN⁺ 2024-04-22 | 1 yorum | WhatsApp'ta paylaş

Racket Programlama Dili

  • Racket olgun, pratik, genişletilebilir, sağlam ve rafine bir programlama dilidir
  • Racket, dil odaklı programlama (Language-Oriented Programming) yaklaşımını benimseyen bir dildir ve şu özelliklere sahiptir:
    • higher-order occurrence typing desteği sunar
    • belge üretimi için Scribble dilini yerleşik olarak içerir
    • Datalog benzeri mantıksal programlamayı destekler
    • küçük makrolardan büyük makrolara, kolay DSL yazımına ve tüm sözdizimini kapsayan desteğe kadar güçlü bir makro sistemine sahiptir
  • Racket ekosistemi; yazılımlar, eğitimler ve dokümantasyon, topluluk, kitaplar, eğitim ve promosyon ürünlerinden oluşur
  • Racket; NSF, DARPA, FIPSE, Exxon Foundation, Microsoft, Mozilla ve Google gibi birçok kuruluş ve kişinin desteğini almıştır

GN⁺ görüşü

  • Racket’ın en büyük avantajlarından biri dil odaklı programlamayı desteklemesidir. Bu sayede alan özel dilleri (DSL) kolayca oluşturmak mümkün olur ve bu da üretkenliği artırmaya yardımcı olur
  • Ancak Lisp ailesi dillerin doğası gereği çok sayıda parantez kullanılır; bu da ilk kez karşılaşanlar için okunabilirliği düşürebilir. Clojure’da olduğu gibi parantez yerine farklı sözdizimlerinin sunulması iyi olabilir
  • Eğitimler ve dokümantasyon oldukça iyi durumdadır, bu da öğrenmeyi kolaylaştırır. Eğitim amaçlı da yaygın biçimde kullanılmaktadır
  • Genel amaçlı bir programlama dili olarak da kullanılabilir, ancak DSL geliştirme ya da SICP gibi eğitim amaçlı kullanımda daha belirgin bir uzmanlaşması vardır. Gerçek üretim ortamlarında kullanım için ise kütüphane ekosistemi henüz yetersiz görünebilir
  • Fonksiyonel dillere başlamak isteyenlere öğrenme amacıyla önerilir. Ancak profesyonel kullanımda Haskell, OCaml ve F# gibi seçenekleri değerlendirmek daha uygun olabilir

1 yorum

 
GN⁺ 2024-04-22
Hacker News görüşü

Özet:

  • Racket'in derleyici, paket yönetim sistemi, GUI IDE, Emacs bağları gibi temel özellikleri çekici, ancak bazı bilgisayar bilimi profesörlerinin yön verdiği programlama dili araştırmaları kısmı daha az ilgi çekiyor.
  • Racket'te, editörde kod yazıp shell'de çalıştırılan Python'dan farklı olarak, uzun süre çalışan bir VM ve REPL ile etkileşim kurmak gerekiyor; bu yüzden iş akışına uyum sağlamak zor olabiliyor.
  • Racket'in typed/racket, racket/gui, scribble/base gibi dillerini tek bir uygulamada nasıl birleştireceği net değil. Her dili anlatan öğretici bölümler birbirinden kopuk ele alındığı için kafa karıştırıyor.
  • Racket hızlı ve pratik; sağlam bir temele ve güçlü bir eşzamanlılık yaklaşımına sahip. Entegre paket ekosistemi ve mükemmel dokümantasyon sistemi de artıları arasında. Geriye dönük uyumluluğu Python'dan daha iyi.
  • Racket ile e-ticaret siteleri, iOS/macOS uygulamaları, Apache Kafka için masaüstü istemcisi ve Lua için #lang gibi pratik projeler geliştirildiğine dair örnekler var.
  • Hacker News de Arc ile yazıldı ve Racket üzerinde çalışıyor.
  • GUI içeren binary geliştirme veya JSON, XML gibi formatları ayrıştırma işleri için Racket uygun.
  • Makro sistemi Common Lisp'ten farklı olduğu için alışmak gerekiyor, ancak metaprogramlama için elverişli.
  • LISP ailesi dillerin sunduğu akademik ve saf programlama bakış açısı, pratik uygulama geliştirmeden uzak görünebiliyor.