2 points par GN⁺ 2023-12-07 | 1 commentaires | Partager sur WhatsApp

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

 
GN⁺ 2023-12-07
Commentaires Hacker News
  • Un utilisateur qui emploie Clojure et ClojureScript depuis 10 ans met en avant comme avantages de Clojure la possibilité d’écrire le code métier dans des fichiers .cljc pour 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.
  • Parmi les problèmes de l’écosystème Clojure, il estime que l’accessibilité et l’utilisabilité des outils sont extrêmement polarisées, et qu’avec des outils ou frameworks plus simples, Clojure serait plus largement adopté.
  • Un développeur qui n’a utilisé que Clojure pendant 7 ans explique que l’absence d’un système de types puissant est son principal reproche, et pense que Clojure donne plus de puissance aux développeurs qui aiment Ruby ou Python.
  • Une équipe qui développe en Clojure et ClojureScript mentionne les avantages de l’accessibilité de Clojure et du workflow REPL, et indique qu’utiliser Babashka/nbb pour de petits projets ou de petites tâches est utile.
  • Un débutant en Clojure trouve les états d’erreur des outils difficiles à comprendre, apprécie les idées innovantes de l’écosystème Clojure, mais mentionne la nécessité d’améliorer l’usage des parenthèses et la gestion de nil.
  • Il est souligné que le désir presque dogmatique, dans la communauté Clojure, de combiner des bibliothèques peut ralentir le rythme de travail des équipes de développement web, et qu’il faudrait des frameworks web plus faciles à utiliser.
  • Certains considèrent comme des inconvénients la petite communauté d’ingénierie de Clojure et l’absence d’un système de types statique, tandis que l’interopérabilité avec Java est vue comme un point fort.
  • Un utilisateur de Clojure pointe du doigt les messages d’erreur de Clojure et le manque de type hints, et se plaint de la difficulté des refactorings à grande échelle.
  • Un commentaire recommande un site de tutoriels interactifs pour les débutants en Clojure.
  • Un utilisateur dit aimer Clojure, mais avoir fini par comprendre que pour les applications modernes complexes, c’est finalement l’écosystème qui compte.