2 puntos por GN⁺ 2023-12-07 | 1 comentarios | Compartir por WhatsApp

¿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

 
GN⁺ 2023-12-07
Opiniones de Hacker News
  • Un usuario que ha usado Clojure y ClojureScript durante 10 años destaca como ventajas de Clojure la posibilidad de escribir código de dominio en archivos .cljc y 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.
  • Como problemas del ecosistema de Clojure, se menciona que la accesibilidad y usabilidad de las herramientas están extremadamente polarizadas, y se plantea que Clojure sería adoptado más ampliamente si existieran herramientas o frameworks más fáciles de usar.
  • Un desarrollador que ha usado solo Clojure durante 7 años dice que su principal queja es la ausencia de un sistema de tipos fuerte, y considera que Clojure ofrece más poder a quienes disfrutan Ruby o Python.
  • Un equipo que desarrolla con Clojure y ClojureScript menciona como ventajas la accesibilidad de Clojure y el flujo de trabajo con REPL, y comenta que usar Babashka/nbb es útil para proyectos o tareas pequeñas.
  • Una persona principiante en Clojure siente que los estados de error de las herramientas son crípticos, valora las ideas innovadoras del ecosistema de Clojure, pero menciona la necesidad de mejorar el uso de paréntesis y el manejo de nil.
  • Se señala que el deseo casi doctrinario de la comunidad de Clojure por combinar bibliotecas puede ralentizar el trabajo de equipos reales de desarrollo web, y se menciona la necesidad de frameworks web más fáciles de usar.
  • También se expresa la opinión de que la pequeña comunidad de ingeniería de Clojure y la ausencia de un sistema de tipos estático son desventajas, mientras que la interoperabilidad con Java se considera una fortaleza.
  • Una persona usuaria de Clojure señala la falta de mensajes de error claros y de type hints, y se queja de la dificultad de hacer refactorizaciones de código a gran escala.
  • Hay un comentario que recomienda un sitio de tutoriales interactivos para principiantes en Clojure.
  • Un usuario dice que le gusta Clojure, pero que terminó aprendiendo que, para las aplicaciones modernas complejas, el ecosistema sí importa.