Ana içeriğe geç

Clojure

Okunuşu
klojır
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/clojure

Kısaca

Clojure, JVM'de çalışan modern ve dinamik bir Lisp lehçesidir; değiştirilemez veriyi, fonksiyonel programlamayı ve REPL tabanlı geliştirmeyi öne çıkarır.

Clojure nedir?

Clojure, Rich Hickey tarafından geliştirilen ve ilk kez 2007'de yayımlanan, genel amaçlı bir programlama dilidir. En eski programlama dili ailelerinden biri olan Lisp'in bir lehçesidir ve Java Sanal Makinesi üzerinde çalışır; bu yüzden Clojure kodu herhangi bir Java kütüphanesini çağırabilir. ClojureScript, tarayıcılar ve Node.js için JavaScript'e derlenen kardeş bir gerçeklemedir.

Tüm Lisp'ler gibi Clojure da kodu parantez içindeki iç içe listeler olarak yazar ve fonksiyon başta gelir: 1 + 2 yerine (+ 1 2). Kod dilin kendi veri yapılarıyla yazıldığı için (bu özelliğe homoikoniklik denir), makrolar kodu çalışmadan önce dönüştürebilir ve geliştiricilerin dilin kendisini genişletmesine izin verir. Clojure dinamik tiplidir ve fonksiyoneldir; çekirdek koleksiyonları (listeler, vektörler, eşlemeler ve kümeler) değiştirilemez ve kalıcıdır (persistent), yani güncellemeler eski sürümlerle belleği verimli biçimde paylaşan yeni sürümler döndürür. Değişmesi gereken durum için, bir değeri iş parçacıkları arasında güvenle güncelleyen atom gibi denetimli araçlar sunar.

Clojure arka uç servislerinde, veri işlemede ve finansal sistemlerde, ClojureScript ise web ön uçlarında kullanılır. Geliştiriciler genellikle çalışan programlarına bağlı bir REPL'de çalışır ve her seferinde tek bir fonksiyonu değerlendirip yeniden tanımlar; bu, düzenle-derle-çalıştır döngüsünden çok uygulamayla yapılan bir sohbete benzer.

Clojure sıklıkla diğer Lisp'lerle ve diğer JVM dilleriyle kıyaslanır. Common Lisp ve Scheme gibi eski Lisp'lere kıyasla vektörler ve eşlemeler için değişmez sözdizimi, varsayılan olarak değiştirilemez veri ve ana platformuyla sıkı bütünleşme ekler. Yine JVM'de çalışan Scala ve Kotlin'e kıyasla Clojure dinamik tiplidir ve sözdizimi bakımından çok daha minimaldir; derleme zamanı tip denetimlerini esneklik ve etkileşimli geliştirmeyle takas eder.

Önemli noktalar

  • Clojure, JVM üzerinde çalışan ve Java kütüphanelerini kullanabilen bir Lisp lehçesidir.
  • Çekirdek veri yapıları değiştirilemez ve kalıcıdır.
  • Kod veri olarak yazıldığı için makrolar dili genişletebilir.
  • REPL tabanlı geliştirme, çalışan bir programı etkileşimli olarak değiştirmenize olanak tanır.
  • ClojureScript aynı dili JavaScript ortamlarına getirir.

Örnek

Clojure'da değiştirilemez eşlemeler ve iş hattı zincirlemeclojure
;; Maps are immutable: assoc returns a new map
(def user {:name "Ada" :langs ["clojure" "java"]})
(def updated (assoc user :role "admin"))

(println (:role user))     ;; nil (original unchanged)
(println (:role updated))  ;; admin

;; The ->> macro threads a value through a series of functions
(->> [1 2 3 4 5 6]
     (filter even?)
     (map #(* % %))
     (reduce +)
     (println))            ;; 56

Sık sorulan sorular

Clojure'da neden bu kadar çok parantez var?

Clojure, tüm Lisp'ler gibi kodu, her parantez çiftinin içinde önce fonksiyon adı gelen iç içe listeler olarak yazar. Bu tek biçimli yapı sözdizimini çok küçük tutar ve makroların kodu veri gibi ele almasını sağlar; editörler de parantezleri otomatik dengeler.

Clojure fonksiyonel bir dil mi?

Evet. Clojure saf fonksiyonları ve değiştirilemez veriyi teşvik eder ve fonksiyonları değer olarak ele alır; ancak pragmatiktir: yan etkilere izin verir ve atomlar gibi durumu değiştirmenin yönetilen yollarını sunar.

Clojure ile ClojureScript arasındaki fark nedir?

Aynı dilin farklı platformları hedeflemesidir. Clojure JVM üzerinde çalışır ve Java kütüphanelerini kullanır; ClojureScript ise JavaScript'e derlenir ve tarayıcılarda ya da Node.js'te çalışır.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar