5 puan yazan GN⁺ 2024-05-23 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-05-23
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

    • “Bir süre neden ortadan kaybolduğu”nun nedeni, onu yapan Anthony Grimes'ın (https://github.com/Raynes) 7 yıl önce hayatını kaybetmiş olması: https://www.reddit.com/r/Clojure/comments/5gyyxw/clojure_ope...
    • Clojure, Rust, TS gibi ifade gücü yüksek diller kullanırken Go'ya kolayca geçebilen insanlara hep şaşırıyorum
      İ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 öğrenmemi hep adındaki “j” engelledi. JDK ve JVM ile o kadar çok kötü deneyim yaşadım ki, JavaScript anlamına gelmiyorsa içinde “J” olan şeylerden yaklaşık bin kilometre uzakta durmak istiyorum
  • 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

    • Eğlenceyi web'e taşımaya hazırsanız Biff'e bakabilirsiniz: https://biffweb.com
    • Babashka'nın en iyi yanı, bugünlerde gerçekten piller dahil gelmesi
      İş 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-server ile 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ğer
  • Benzer 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

    • Reagent iyi ve yaklaşık 10 yıldır var, ama React zaten karmaşıkken onun üstüne çok fazla ek karmaşıklık bindirdiğini hissettiğim için React’in ince bir sarmalayıcısına geçtim
      İç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...
    • Elixir backend de BEAM VM’in gücü sayesinde iyi uydu
    • Bu yapıda kod bölme veya statik site üretimi yapılıp yapılamadığını merak ediyorum
      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

    • Üslubunu fazla laf kalabalığı gibi buluyorum ama bu tarzı sevenler olduğunu da anlıyorum
      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
    • Aphyr’in Clojure from the ground up serisini de çok seviyorum: https://aphyr.com/posts/301-clojure-from-the-ground-up-welco...
    • Emacs deneyiminiz yoksa VSCode’da Calva eklentisini kullanmak daha iyi olabilir
  • 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

    • Birkaç ay önce Common Lisp öğrenirken benzer bir his yaşamıştım
      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

    • Clojure çalışma zamanını Clang/LLVM ile gerçekleştirmeye yönelik bir çalışma sürüyor ve hot reloading gibi ilginç özellikler de hedefleniyor
      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
    • Şu an itibarıyla en üstteki yorum https://babashka.org/ adresini işaret ediyor, ama bu LLVM değil GraalVM tabanlı
      Aslında bunun büyük bir sorun olması gerekmez
    • Yakında geliyor: https://jank-lang.org
    • https://jank-lang.org/
  • İ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

    • Nubank, 2020’de Clojure’un arkasındaki danışmanlık şirketi Cognitect’i satın aldı; ayrıca José Valim’in işvereni olan Platformatec’i de satın aldı
      İ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
    • Çince konuşulan bölgelerden gelmiş gibi görünen adlara sahip Clojure kullanıcılarıyla sık sık karşılaşıyorum
      Çin’de de Clojure’un anlamlı bir akım olup olmadığını merak ediyorum