5 poin oleh GN⁺ 2024-05-23 | 1 komentar | Bagikan ke WhatsApp
  • Try Clojure adalah halaman pengalaman 5 menit untuk langsung mengevaluasi ekspresi Clojure di browser
  • Input yang dimasukkan di REPL di sisi kanan layar dijalankan sebagai read-eval-print loop
  • Anda bisa mengetik sendiri contoh ekspresi seperti (+ 1 2), atau mengklik potongan kode agar otomatis disisipkan
  • Periksa perintah dengan (help), lalu saat siap, ketik (start) untuk memulai pengalaman
  • Halaman ini dibuat dengan Clojurescript, dan informasi pembuatannya mencantumkan Elia Scotto, Michiel Borkent, serta komunitas Clojure

Clojure yang langsung berjalan di browser

  • Try Clojure dirancang agar Anda bisa mencoba Clojure secara singkat dengan panduan “Got 5 minutes?”
  • Clojure symbolic expression yang dimasukkan pengguna di REPL di sisi kanan akan dievaluasi
  • Alur pengalamannya sederhana
    • Ketik sendiri ekspresi seperti (+ 1 2)
    • Klik potongan kode agar otomatis disisipkan
    • Periksa perintah dengan (help)
    • Mulai dengan (start)

Informasi pembuatan

  • Halaman ini memuat kutipan dari Rich Hickey: “If you want everything to be familiar, you'll never learn anything new.”
  • Try Clojure dibuat dengan Clojurescript, dan Elia Scotto ditampilkan sebagai pembuat
  • Juga terdapat ucapan terima kasih kepada Michiel Borkent dan komunitas Clojure

1 komentar

 
GN⁺ 2024-05-23
Pendapat Hacker News
  • Senang melihat ini kembali. Versi yang ada sangat lama dulu membuat saya mencoba Clojure, dan pilihan itu menjadi keputusan yang paling berpengaruh dalam karier saya
    Sampai sekarang saya memakai Clojure hampir setiap hari di kantor dan di rumah; kadang Clojure standar, kadang Babashka yang sangat bagus sebagai pengganti task runner seperti Make atau skrip Zsh
    Go juga menjadi pilihan kedua yang kuat saat perlu mengompilasi menjadi satu binary, tetapi Clojure terasa paling nyaman berkat alur pengembangan berbasis REPL yang terasa seperti berdialog dengan program, alih-alih loop tulis-kompilasi-jalankan yang biasa
    Ditambah lagi karena berjalan di atas JVM, ini menjadi seperangkat alat yang menyenangkan untuk menyelesaikan pekerjaan. Kalau Anda punya sedikit saja minat pada Lisp dan pemrograman fungsional, saya sangat menyarankan untuk mencobanya; jika memakai VSCode, plugin Calva sangat membantu

    • “Alasan sempat menghilang cukup lama” adalah karena pembuatnya, Anthony Grimes(https://github.com/Raynes), meninggal dunia 7 tahun lalu: https://www.reddit.com/r/Clojure/comments/5gyyxw/clojure_ope...
    • Saya selalu kagum melihat orang-orang yang memakai bahasa dengan ekspresivitas tinggi seperti Clojure, Rust, TS, tetapi tetap bisa dengan mudah beralih ke Go
      Beralih ke bahasa yang ekspresivitasnya rendah terasa menyakitkan dan menjengkelkan; saya ingat saat pindah dari Python ke Java 5, kode untuk mengekspresikan hal yang sama menjadi 3–5 kali lebih panjang
      Mungkin kuncinya adalah memakai bahasa yang ekspresivitasnya rendah hanya untuk menulis hal-hal kecil, seperti shell script, fungsi C kecil untuk performa atau foreign function interface, atau utilitas Go kecil
    • Hal yang selalu membuat saya tidak jadi belajar Clojure adalah huruf “j” dalam namanya. Saya punya terlalu banyak pengalaman buruk dengan JDK dan JVM, jadi kalau “J” di dalamnya bukan berarti JavaScript, saya ingin berada sekitar seribu kilometer jauhnya
  • Kalau baru pertama mengenal Clojure dan ingin langsung bereksperimen dengan sesuatu yang berguna, saya sangat merekomendasikan runtime Babashka untuk scripting: https://babashka.org
    Ini menyenangkan, mudah didekati, dan merupakan salah satu bagian ekosistem Clojure yang lebih matang
    Berbeda dari Clojure JVM penuh, waktu start-nya sangat cepat sehingga menjadi titik masuk yang bagus, dan pemula bisa bekerja seolah-olah interaktif dengan alat file watching/reloading yang sudah akrab, misalnya nodemon
    Nantinya, sebaiknya beralih ke konfigurasi interaktif penuh dengan koneksi REPL dari editor, tetapi bagi pemula alur itu bisa terasa asing dan setup-nya juga bisa merepotkan

    • Jika sudah siap memperluas keseruan ke web, lihat Biff: https://biffweb.com
    • Hal terbaik dari Babashka adalah sekarang benar-benar batteries included
      Saya pernah memakainya bersama HTMX karena perlu membuat UI kecil untuk menampilkan statistik aplikasi kerja, dan pengalamannya sangat bagus
      Babashka sudah menyertakan hampir semua yang dibutuhkan untuk aplikasi web dasar, dan dengan HTMX Anda bisa melakukan dynamic loading pada halaman tanpa perlu menangani frontend JavaScript
      Selain itu, Anda bisa menjalankan nREPL dengan bb --nrepl-server, lalu menghubungkan editor seperti Calva untuk mengembangkan skrip secara interaktif, jadi ini layak dicoba jika Anda membutuhkan UI web sederhana
  • Ada juga situs dengan arah serupa, https://www.maria.cloud/
    Situs itu lebih ditujukan untuk mengajarkan pemrograman kepada pemula total, tetapi menurut saya manipulasi dasar ala paredit dan cara evaluasi per form jauh lebih dekat dengan pengembangan berbasis REPL yang benar-benar dipakai
    Mengetik langsung di jendela terminal REPL ergonomics-nya sangat buruk, dan biasanya yang lebih realistis adalah mengirim form di bawah kursor ke proses REPL di suatu tempat menggunakan alat seperti Calva di VSCode atau CIDER di Emacs

  • Alasan terbaik untuk mempelajari Clojure adalah Reagent, dan menurut saya itu jelas cara terbaik menggunakan React: https://reagent-project.github.io/
    shadow-cljs memudahkan penggunaan library npm: https://github.com/thheller/shadow-cljs
    Untuk susunan dasar, saya akhirnya menetap pada backend Go dan frontend Reagent: https://github.com/nathants/aws-gocljs

    • Reagent bagus dan sudah bertahan sekitar 10 tahun, tetapi React sendiri sudah kompleks, dan saya merasa ada terlalu banyak kompleksitas tambahan yang ditumpuk di atasnya, jadi saya pindah ke wrapper tipis untuk React
      Saya ingin melihat lebih jelas apa yang terjadi di dalamnya, dan berinteroperasi dengan komponen React native secara lebih sederhana
      Sepertinya dukungan eksperimental React 18 mulai dikejar, tetapi Reagent tertinggal dari arus React terbaru dan mungkin tidak mendapatkan semua manfaat optimasi performa
      Masih memakai class component dan belum memakai hook, dan ada juga kekhawatiran bahwa konversi runtime Hiccup bisa menurunkan performa
      Namun dalam kebanyakan kasus itu mungkin tidak akan terasa, dan kalau tidak melakukan hal-hal yang mewah, seharusnya tidak apa-apa. Karena saya merindukan model UI-as-data milik Hiccup, suatu hari saya mungkin kembali ke Reagent
      Untuk manajemen state, saya sangat merekomendasikan re-frame: https://day8.github.io/re-frame/
      Awalnya mungkin terlihat berat, tetapi dokumentasinya sangat bagus, dan setelah dipahami, modelnya sangat jelas
      Ada juga alternatif seperti Helix(https://github.com/lilactown/helix) atau UIx(https://github.com/pitch-io/uix), serta refx(https://github.com/ferdinand-beyer/refx) yang hampir menghilangkan dependensi pada Reagent
      Atau Anda bisa menambahkan kode interoperabilitas ke UIx/Helix untuk memasangkan re-frame: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
    • Backend Elixir juga cocok berkat kekuatan BEAM VM
    • Saya penasaran apakah susunan itu mendukung code splitting atau pembuatan situs statis
      Pada 2024 kita tidak bisa mengirimkan file HTML kosong, karena itu merusak optimasi pencarian; kalau bukan begitu, saya ingin mencobanya
  • Masa-masa saya memakai Clojure benar-benar menyenangkan dan sangat saya rekomendasikan: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...

  • Clojure for the Brave and True karya Daniel Higginbotham adalah materi yang benar-benar bagus untuk belajar Clojure, jadi sangat saya rekomendasikan
    Bisa dibaca gratis secara online: https://www.braveclojure.com/clojure-for-the-brave-and-true

    • Saya merasa gaya bahasanya terlalu bertele-tele, tetapi saya paham ada orang yang menyukai gaya seperti itu
      Masalah sebenarnya dari buku ini bukan Clojure, melainkan bahwa ia mulai mengajar dari Emacs
      Saat ini mungkin banyak pemula yang datang dari VSCode, dan bagi mereka itu menjadi distraksi besar
    • Saya juga sangat menyukai seri Clojure from the ground up dari Aphyr: https://aphyr.com/posts/301-clojure-from-the-ground-up-welco...
    • Jika tidak punya pengalaman Emacs, mungkin lebih baik memakai plugin Calva di VSCode
  • Beberapa tahun lalu seorang rekan menyarankan agar saya membaca History of Clojure meskipun tidak mencoba Clojure, tetapi saya menundanya: https://dl.acm.org/doi/pdf/10.1145/3386321
    Lalu setelah menonton Rich Hickey - Greatest Hits https://changelog.com/posts/rich-hickeys-greatest-hits, saya membaca History of Clojure dan langsung mulai mempelajarinya
    Clojure adalah salah satu bahasa paling menyenangkan untuk membangun sesuatu sekaligus salah satu yang paling indah
    Bukan sintaksnya sendiri, melainkan caranya memungkinkan kita mengekspresikan pikiran melalui desain dan komposisi yang baik, yang memberi rangsangan menyenangkan pada otak
    Jika Anda masih mencari alat mengilap yang benar-benar pas tetapi belum ada yang terasa cocok, Clojure layak dicoba. Dari semua bahasa yang pernah saya lihat sejauh ini, ini termasuk yang paling ringkas sekaligus kuat

    • Beberapa bulan lalu saya mendapatkan perasaan serupa saat mempelajari Common Lisp
      Saya penasaran apakah dengan mempelajari Clojure ada hal tambahan yang didapat di luar itu, atau pada umumnya mirip saja
  • Penasaran apakah ada versi Clojure yang dikompilasi dengan sesuatu seperti LLVM
    Rasanya mirip dengan yang awalnya ingin dilakukan Scala Native, tetapi dalam praktiknya tidak benar-benar berhasil menjadi arus utama seperti itu
    Saya menyukai pemrograman fungsional, tetapi pada 2024 ekosistem Java terasa terlalu usang hingga sulit ditoleransi

    • Ada pekerjaan yang sedang berjalan untuk mengimplementasikan runtime Clojure dengan Clang/LLVM, dan juga menargetkan fitur menarik seperti hot reloading
      Bisa dilihat di https://jank-lang.org/
      Belum mencapai kesetaraan fitur penuh dengan JVM Clojure, tetapi saya mengikuti pengembangannya dengan saksama
    • Komentar teratas saat ini menunjuk ke https://babashka.org/, tetapi itu berbasis GraalVM, bukan LLVM
      Sebenarnya itu mungkin bukan masalah besar
    • Akan segera hadir: https://jank-lang.org
    • https://jank-lang.org/
  • Tautan terkait:
    Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - Februari 2022, 93 komentar
    Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - Desember 2011, 26 komentar
    Try Clojure - https://news.ycombinator.com/item?id=1359682 - Mei 2010, 60 komentar

  • Clojure mulai populer di Meksiko, dan Brasil sepertinya punya arus serupa berkat Nubank
    Itu tempat yang ingin dituju para ilmuwan komputer untuk bekerja, dan tampaknya mereka terutama bekerja dengan Clojure
    Sepertinya mereka pernah merekrut beberapa anggota inti bahasa tersebut, dan saya ingat pada suatu titik mereka juga mengakuisisi perusahaan milik pencipta Elixir, José Valim
    Namun tetap saja, mereka masih tampak sebagai perusahaan yang terutama memakai Clojure

    • Nubank mengakuisisi Cognitect, perusahaan konsultansi di balik Clojure, pada 2020, dan juga mengakuisisi Platformatec, tempat José Valim bekerja
      Akuisisi yang terakhir itu untuk mendapatkan keahlian manajemen proyek Platformatec (https://building.nubank.com.br/tech-perspectives-behind-nuba...), dan sejauh yang saya tahu tidak ada kode Elixir yang berjalan di Nubank
      Di “sisi lain” pipeline ETL ada Python, tetapi untuk area yang berhadapan dengan pengguna, sejauh yang saya tahu backend-nya Clojure, sedangkan aplikasi Android dan iOS-nya TypeScript
    • Saya sering menjumpai pengguna Clojure yang namanya terlihat seperti nama berbahasa Tionghoa
      Saya penasaran apakah Clojure di Tiongkok juga merupakan tren yang berarti