2 poin oleh GN⁺ 2023-12-07 | 1 komentar | Bagikan ke WhatsApp

Mengapa Jepsen ditulis dengan Clojure?

  • Jepsen dibangun untuk menguji sistem konkurensi, terutama basis data.
  • Struktur data immutable Clojure dan dukungan konkurensi yang sangat baik memudahkan penulisan program konkurensi yang benar.
  • Diperlukan dukungan untuk berbagai klien basis data, dan Clojure memiliki interoperabilitas yang baik dengan Java.

Memilih bahasa untuk pengujian

  • Dibutuhkan bahasa yang ringkas dan fleksibel, cocok untuk pekerjaan pengujian yang eksperimental.
  • Clojure ringkas dan menawarkan fleksibilitas sintaks melalui sistem makro.
  • Untuk pengujian yang menangani struktur data kompleks, struktur data Clojure dan fungsi pustaka standarnya sangat cocok.

Performa dan stabilitas

  • Dibutuhkan bahasa dengan performa yang "cukup baik"; Clojure relatif lebih lambat dibanding Java, tetapi perbedaan performanya dapat diatasi.
  • Alat profiling JVM yang unggul bekerja dengan baik bersama Clojure.
  • Clojure menunjukkan stabilitas tinggi baik pada target JVM maupun pada bahasanya sendiri, dengan tingkat pelapukan pustaka yang lebih rendah.

Kekurangan dan keputusan

  • Clojure memiliki kekurangan berupa komunitas engineering yang kecil dan tidak adanya sistem tipe statis yang diterima luas.
  • Karena Jepsen dipelihara dan digunakan oleh tim kecil, kekurangan ini tidak menjadi masalah besar.
  • Setelah membuat prototipe Jepsen dengan Clojure, diputuskan bahwa ini merupakan kompromi yang cukup baik.

Opini GN⁺

  • Alasan terpenting Jepsen ditulis dengan Clojure adalah karena struktur data immutable Clojure dan dukungan konkurensinya yang kuat membuatnya cocok untuk menguji sistem basis data konkurensi yang kompleks.
  • Tulisan ini dapat menarik bagi orang-orang yang tertarik pada rekayasa perangkat lunak, khususnya pemrograman konkurensi dan sistem basis data, serta memberikan contoh praktis tentang bagaimana pemilihan bahasa pemrograman tertentu dapat memengaruhi proyek nyata.

1 komentar

 
GN⁺ 2023-12-07
Komentar Hacker News
  • Seorang pengguna yang telah memakai Clojure dan ClojureScript selama 10 tahun menekankan kelebihan Clojure seperti manfaat menulis kode domain di file .cljc agar bisa dikompilasi baik di sisi server maupun klien, performa dan kemudahan guna ulang transducers, serta stabilitas Clojure dan kompatibilitas lamanya.
  • Sebagai kekurangan ekosistem Clojure, ada pendapat bahwa aksesibilitas dan kegunaan alat-alatnya sangat terpolarisasi, dan jika ada alat atau framework yang lebih mudah, Clojure akan diadopsi lebih luas.
  • Seorang pengembang yang hanya menggunakan Clojure selama 7 tahun mengatakan bahwa ketiadaan sistem tipe yang kuat adalah keluhan utamanya, dan ia merasa Clojure memberi lebih banyak kekuatan kepada pengembang yang menyukai Ruby atau Python.
  • Sebuah tim yang mengembangkan dengan Clojure dan ClojureScript menyebut keunggulan aksesibilitas Clojure dan alur kerja REPL, serta mengatakan bahwa memakai Babashka/nbb berguna untuk proyek atau tugas kecil.
  • Seorang pemula Clojure merasa kondisi galat pada alat-alatnya sulit dipahami, menganggap ide-ide inovatif dalam ekosistem Clojure berharga, tetapi menyebut perlunya perbaikan pada penggunaan tanda kurung dan penanganan nil.
  • Ada yang menunjukkan bahwa keinginan yang nyaris bersifat dogmatis di komunitas Clojure untuk merangkai pustaka sendiri dapat memperlambat kecepatan kerja tim pengembangan web nyata, sambil menyebut perlunya framework web yang lebih mudah digunakan.
  • Ada pendapat yang melihat kecilnya komunitas rekayasa Clojure dan ketiadaan sistem tipe statis sebagai kekurangan, sementara interoperabilitas dengan Java dipandang sebagai kekuatan.
  • Salah satu pengguna Clojure menyoroti pesan galat Clojure dan kurangnya type hint, serta mengeluhkan sulitnya melakukan refaktor kode skala besar.
  • Ada komentar yang merekomendasikan situs tutorial interaktif untuk pemula Clojure.
  • Seorang pengguna mengatakan ia menyukai Clojure, tetapi akhirnya belajar bahwa untuk aplikasi modern yang kompleks, ekosistem tetaplah penting.