Clojure Deneyimi
(tryclojure.org)- Try Clojure, tarayıcıda Clojure ifadelerini doğrudan değerlendirebileceğiniz 5 dakikalık bir deneyim sayfasıdır
- Ekranın sağ tarafındaki REPL içinde girilen içerik, read-eval-print loop olarak çalıştırılır
(+ 1 2)gibi örnek ifadeleri doğrudan girebilir veya kod parçacıklarına tıklayarak otomatik ekleyebilirsiniz- Komutları
(help)ile görebilir, hazır olduğunuzda deneyimi başlatmak için(start)girebilirsiniz - Bu sayfa Clojurescript ile yapılmıştır ve yapım bilgilerinde Elia Scotto, Michiel Borkent ve Clojure topluluğu yer alır
Tarayıcıda doğrudan çalışan Clojure
- Try Clojure, “Got 5 minutes?” yönlendirmesiyle kısa bir Clojure deneyimi sunacak şekilde hazırlanmıştır
- Sağ taraftaki REPL içinde kullanıcının girdiği Clojure symbolic expression değerlendirilir
- Deneyimin akışı basittir
(+ 1 2)gibi ifadeleri doğrudan girin- Kod parçacıklarına tıklayarak otomatik ekleyin
- Komutları
(help)ile kontrol edin (start)ile başlayın
Yapım bilgileri
- Sayfada Rich Hickey’den şu alıntı yer alır: “If you want everything to be familiar, you'll never learn anything new.”
- Try Clojure, Clojurescript ile yapılmıştır ve yapımcı olarak Elia Scotto belirtilir
- Ayrıca Michiel Borkent ve Clojure community için teşekkür de yer alır
1 yorum
Hacker News yorumları
Bunun geri dönmesine sevindim. Çok eski bir sürümü Clojure'u denememi sağlamıştı ve bu seçim kariyerimde en büyük etkiyi yaratan karar oldu
Bugün hâlâ işte ve evde neredeyse her gün Clojure kullanıyorum; bazen standart Clojure, bazen de Make benzeri görev çalıştırıcıların veya Zsh betiklerinin yerine harika bir alternatif olan Babashka
Tek bir binary olarak derlemem gerektiğinde Go da güçlü bir ikinci seçenek, ama Clojure, alışıldık yaz-derle-çalıştır döngüsünden çok programla konuşuyormuş gibi hissettiren REPL tabanlı geliştirme akışı sayesinde bana en rahat gelen dil
Buna JVM üzerinde çalışmasını da ekleyince, işi keyifle bitirmeyi sağlayan bir araç seti ortaya çıkıyor. Lisp'e ve fonksiyonel programlamaya biraz bile ilginiz varsa mutlaka denemenizi öneririm; VSCode kullanıyorsanız Calva eklentisi büyük yardım sağlar
İfade gücü daha düşük bir dile geçmek bana acı verici ve sinir bozucu gelmişti; Python'dan Java 5'e geçtiğimde aynı şeyi ifade eden kodun 3 ila 5 kat uzadığını hatırlıyorum
Sanırım işin özü, ifade gücü düşük dillerle yalnızca kabuk betikleri, performans veya dış fonksiyon arayüzleri için küçük C fonksiyonları, küçük Go yardımcı araçları gibi küçük şeyler yazmakta yatıyor
Clojure ile ilk kez tanışıp hemen işe yarar şekilde denemek istiyorsanız, betik yazımı için Babashka runtime'ını şiddetle öneririm: https://babashka.org
Eğlenceli, erişilebilir ve Clojure ekosisteminin daha cilalanmış kısımlarından biri
Tam JVM Clojure'dan farklı olarak başlangıç süresi çok hızlı olduğu için iyi bir giriş noktası; yeni başlayanlar da zaten aşina oldukları dosya izleme/yeniden yükleme araçlarıyla, örneğin nodemon gibi araçlarla, etkileşimliymiş gibi çalışabilir
Daha sonra editörden REPL bağlantısı kullanan tam etkileşimli bir düzene geçmek iyi olur, ancak bu akış yeni başlayanlara yabancı gelebilir ve kurulumu da zahmetli olabilir
İş uygulamasının istatistiklerini gösteren küçük bir UI yapmam gerekiyordu; HTMX ile birlikte denedim ve çok iyi bir deneyimdi
Babashka'da temel bir web uygulaması için gerekenlerin neredeyse tamamı yerleşik geliyor; HTMX kullanınca da JavaScript frontend'iyle uğraşmadan sayfada dinamik yükleme yapabiliyorsunuz
Ayrıca
bb --nrepl-serverile nREPL'i ayağa kaldırıp Calva gibi bir editörü bağlayarak betikleri etkileşimli biçimde geliştirebilirsiniz; basit bir web UI'a ihtiyacınız varsa göz atmaya değerBenzer yönde bir site olarak https://www.maria.cloud/ da var
Tamamen yeni başlayanlara programlama öğretmeye daha çok odaklanmış olsa da, temel paredit tarzı işlemler ve form bazında değerlendirme yaklaşımı, pratikte kullanılan REPL odaklı geliştirmeye çok daha yakın bence
REPL terminal penceresine doğrudan yazmak ergonomi açısından çok kötü; genelde VSCode'daki Calva veya Emacs'teki CIDER gibi araçlarla imlecin altındaki formu bir yerdeki REPL sürecine göndermek çok daha gerçekçi
Clojure öğrenmek için en iyi neden Reagent; bence React kullanmanın açık ara en iyi yolu: https://reagent-project.github.io/
shadow-cljs, npm kütüphanelerini kullanmayı kolaylaştırıyor: https://github.com/thheller/shadow-cljs
Temel yapı olarak Go backend ve Reagent frontend’de karar kıldım: https://github.com/nathants/aws-gocljs
İçeride ne olup bittiğini daha net görmek ve yerel React bileşenleriyle daha basit birlikte çalışabilirlik istedim
React 18 için deneysel desteği yakalamış gibi görünse de Reagent, güncel React akışının gerisinde kaldı ve tüm performans optimizasyonu avantajlarını alamayabilir
Hâlâ class component kullanıyor, hook kullanmıyor; Hiccup’ın çalışma zamanı dönüşümünün performansı düşürebileceğine dair endişeler de var
Yine de çoğu durumda hissedilir bir sorun olmayacaktır; çok gösterişli şeyler yapmıyorsanız sorun çıkmaz. Hiccup’ın UI-as-data modelini özlüyorum, bu yüzden bir gün Reagent’a dönebilirim
Durum yönetimi için re-frame’i kuvvetle öneririm: https://day8.github.io/re-frame/
Başta göz korkutucu görünebilir ama dokümantasyonu harika; anladıktan sonra modeli çok net
Helix(https://github.com/lilactown/helix) veya UIx(https://github.com/pitch-io/uix) gibi alternatifler de var; Reagent bağımlılığını neredeyse kaldıran refx(https://github.com/ferdinand-beyer/refx) de mevcut
Ya da UIx/Helix’e birlikte çalışabilirlik kodu ekleyip re-frame’i bağlayabilirsiniz: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
2024’te boş bir HTML dosyası gönderemeyiz; arama optimizasyonunu mahveder, o yüzden öyle değilse denemek isterim
Clojure kullandığım dönem gerçekten çok iyiydi, şiddetle tavsiye ederim: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...
Daniel Higginbotham’ın Clojure for the Brave and True kitabı, Clojure öğrenmek için gerçekten harika bir kaynak; şiddetle tavsiye ederim
Çevrimiçi olarak ücretsiz okunabiliyor: https://www.braveclojure.com/clojure-for-the-brave-and-true
Bu kitabın asıl sorunu Clojure değil, Emacs öğretmeye başlayarak başlaması
Günümüzde VSCode’dan gelen çok sayıda yeni başlayan olacaktır; onlar için büyük bir dikkat dağıtıcı oluyor
Birkaç yıl önce bir iş arkadaşım, Clojure’u denemesem bile History of Clojure’u okumamı önermişti ama ertelemiştim: https://dl.acm.org/doi/pdf/10.1145/3386321
Sonra Rich Hickey - Greatest Hits’i gördükten sonra https://changelog.com/posts/rich-hickeys-greatest-hits, History of Clojure’u okuyup hemen öğrenmeye başladım
Clojure, bir şeyler inşa etmek için en eğlenceli dillerden biri ve aynı zamanda en güzel dillerden biri
Söz diziminin kendisinden çok, iyi tasarım ve bileşim yoluyla düşünceleri ifade etmeyi sağlaması zihni hoş bir şekilde uyarıyor
Hâlâ tam uyacak parlak bir araç arıyor ve hiçbir şey size hitap etmediyse Clojure’u denemeye değer. Şimdiye kadar gördüğüm diller arasında en özlü ama aynı zamanda en güçlü olanlardan biri
Clojure öğrenince bunun üstüne ek bir şey kazanılıyor mu, yoksa genel olarak benzer mi merak ediyorum
LLVM gibi bir şeye derlenen bir Clojure sürümü olup olmadığını merak ediyorum
Scala Native’in aslında yapmaya çalıştığı şeye benzer bir his veriyor, ama pratikte öyle yerleşmedi
Fonksiyonel programlamayı seviyorum ama 2024’te Java ekosistemi bana fazla eski hissettiriyor, katlanmak zor
https://jank-lang.org/ adresinde görülebilir
Henüz tam JVM Clojure ile özellik eşitliğine ulaşmış değil, ama geliştirmesini yakından izliyorum
Aslında bunun büyük bir sorun olması gerekmez
İlgili bağlantılar:
Try Clojure – Tarayıcıda etkileşimli bir eğitim - https://news.ycombinator.com/item?id=30423856 - Şubat 2022, 93 yorum
Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - Aralık 2011, 26 yorum
Try Clojure - https://news.ycombinator.com/item?id=1359682 - Mayıs 2010, 60 yorum
Meksika’da Clojure popülerlik kazanıyor; Brezilya’da da Nubank nedeniyle benzer bir akım olduğunu düşünüyorum
Bilgisayar bilimcilerin çalışmak istediği bir yer ve görünüşe göre çoğunlukla Clojure ile çalışıyorlar
Dilin çekirdek üyelerinden bazılarını işe aldıklarını sanıyorum; bir noktada Elixir’in yaratıcısı José Valim’in şirketini de satın aldıklarını hatırlıyorum
Yine de hâlâ ağırlıklı olarak Clojure kullanan bir şirket gibi görünüyor
İkincisi Platformatec’in proje yönetimi uzmanlığını elde etmek içindi (https://building.nubank.com.br/tech-perspectives-behind-nuba...); bildiğim kadarıyla Nubank’ta çalışan Elixir kodu yok
ETL hattının “diğer tarafında” Python var, ama kullanıcıya dönük alanda bildiğim kadarıyla backend Clojure, Android ve iOS uygulamaları TypeScript
Çin’de de Clojure’un anlamlı bir akım olup olmadığını merak ediyorum