¿Por qué Jepsen está escrito en Clojure?
- Jepsen fue construido para probar sistemas concurrentes, principalmente bases de datos.
- Las estructuras de datos inmutables de Clojure y su excelente soporte para concurrencia facilitan escribir programas concurrentes correctos.
- Se necesita soporte para distintos clientes de bases de datos, y Clojure tiene buena interoperabilidad con Java.
Elección del lenguaje para pruebas
- Se necesitaba un lenguaje conciso y flexible, adecuado para trabajo de pruebas experimental.
- Clojure es conciso y ofrece flexibilidad sintáctica mediante su sistema de macros.
- Para pruebas que manejan estructuras de datos complejas, las estructuras de datos de Clojure y las funciones de su biblioteca estándar son muy adecuadas.
Rendimiento y estabilidad
- Se necesitaba un lenguaje con rendimiento "lo suficientemente bueno"; Clojure es relativamente más lento que Java, pero la diferencia de rendimiento puede resolverse.
- Las excelentes herramientas de perfilado de la JVM funcionan bien con Clojure.
- Clojure muestra alta estabilidad tanto por su objetivo en la JVM como por el propio lenguaje, y hay menos deterioro rápido en sus bibliotecas.
Desventajas y decisión
- Clojure tiene desventajas como una comunidad de ingeniería pequeña y la falta de un sistema de tipos estáticos ampliamente aceptado.
- Como Jepsen se mantiene y se usa en un equipo pequeño, estas desventajas no representan un gran problema.
- Después de prototipar Jepsen en Clojure, se consideró que la decisión fue un compromiso bastante bueno.
Opinión de GN⁺
- La razón más importante por la que Jepsen está escrito en Clojure es que, gracias a sus estructuras de datos inmutables y su sólido soporte para concurrencia, es adecuado para probar sistemas complejos de bases de datos concurrentes.
- Este artículo puede resultar interesante para personas interesadas en ingeniería de software, especialmente en programación concurrente y sistemas de bases de datos, y ofrece un caso práctico de cómo la elección de un lenguaje de programación específico puede afectar proyectos reales.
1 comentarios
Opiniones de Hacker News
.cljcy compilarlo tanto para el servidor como para el cliente, el rendimiento y la reutilización de los transducers, y la estabilidad y compatibilidad de larga data de Clojure.nil.