Pourquoi Jepsen est-il écrit en Clojure ?
- Jepsen a été conçu pour tester des systèmes concurrents, principalement des bases de données.
- Les structures de données immuables de Clojure et son excellent support de la concurrence facilitent l’écriture de programmes concurrents corrects.
- Il faut prendre en charge divers clients de bases de données, et Clojure offre une bonne interopérabilité avec Java.
Choisir un langage pour les tests
- Un langage concis et flexible est nécessaire pour un travail de test expérimental.
- Clojure est concis et offre une flexibilité syntaxique grâce à son système de macros.
- Pour des tests qui manipulent des structures de données complexes, les structures de données de Clojure et les fonctions de sa bibliothèque standard sont particulièrement adaptées.
Performances et stabilité
- Il faut un langage aux performances « suffisamment bonnes » ; Clojure est relativement plus lent que Java, mais l’écart de performance peut être résolu.
- Les excellents outils de profiling de la JVM sont bien compatibles avec Clojure.
- Clojure montre une grande stabilité, à la fois en tant que cible JVM et en tant que langage lui-même, avec moins d’usure rapide des bibliothèques.
Inconvénients et décision
- Clojure présente les inconvénients d’une petite communauté d’ingénierie et de l’absence d’un système de types statiques largement adopté.
- Comme Jepsen est maintenu et utilisé par une petite équipe, ces inconvénients ne posent pas de problème majeur.
- Après avoir prototypé Jepsen en Clojure, le choix a semblé être un très bon compromis.
L’avis de GN⁺
- La raison la plus importante pour laquelle Jepsen est écrit en Clojure est que ses structures de données immuables et son fort support de la concurrence le rendent adapté au test de systèmes de bases de données concurrents complexes.
- Cet article peut intéresser les personnes qui s’intéressent au génie logiciel, en particulier à la programmation concurrente et aux systèmes de bases de données, et il fournit un exemple concret de l’impact que le choix d’un langage de programmation peut avoir sur un projet réel.
1 commentaires
Commentaires Hacker News
.cljcpour le compiler à la fois côté serveur et côté client, ainsi que les performances et la réutilisabilité des transducers, sans oublier la stabilité de Clojure et sa compatibilité ancienne.nil.