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
Komentar Hacker News
.cljcagar bisa dikompilasi baik di sisi server maupun klien, performa dan kemudahan guna ulang transducers, serta stabilitas Clojure dan kompatibilitas lamanya.nil.