¿Cómo puedo hacer la transición de Java a Clojure?
-
05-07-2019 - |
Pregunta
Después de descubrir Clojure he pasado los últimos días inmersos en él.
¿Qué tipos de proyectos se prestan a Java sobre Clojure, y viceversa, y en combinación?
¿Cuáles son ejemplos de programas que nunca hubieras intentado antes de Clojure?
Solución
Clojure se presta bien para programación concurrente . Proporciona herramientas tan maravillosas para tratar los subprocesos como Software Transactional Memory y referencias mutables.
Como demostración para el Western Mass Developers Group, Rich Hickey hizo una simulación de colonia de hormigas en la que cada hormiga era su propio hilo y todas las variables eran inmutables. Incluso con una gran cantidad de hilos, las cosas funcionaron muy bien. Esto no solo se debe a que Rich es un programador increíble, sino también porque no tuvo que preocuparse por el bloqueo al escribir su código. Puede consultar su presentación sobre la colonia de hormigas aquí .
Otros consejos
Si vas a probar la programación concurrente, entonces creo que clojure es mucho mejor que lo que obtienes de Java de la caja. Eche un vistazo a esta presentación para ver por qué:
Documenté mis primeros 20 días con Clojure en mi blog
http://loufranco.com/blog/files /category-20-days-of-clojure.html
Comencé con las conferencias SICP y luego construí un tamiz de número primo paralelo. También jugué con macros.
¿Qué tipos de proyectos se prestan a usar Java sobre Clojure, vice ¿Versa, o en combinación?
Un proyecto donde una herramienta de construcción de GUI (como Matisse en Netbeans) es necesario sería un caso en el que Java puede Todavía se requiere. Cualquier cosa hecha en Java se puede hacer en Clojure bastante fácilmente, con proxy y clase gen si necesario, o simplemente acceder a Java como Necesario (., doto, nuevo, etc.). Esta Permite que los proyectos de Clojure se utilicen fácilmente. Bibliotecas de Java o código Java heredado.
¿Qué programas nunca habrías intentado antes de Clojure?
Antes de encontrar a Clojure, estaba contemplando un proyecto que requería JDBC, se ejecutaría en un servlet contenedor, y me anticipé a hacer un gran parte del desarrollo iterativo porque no estaba claro qué métodos haría Trabajar para los datos que necesitaba analizar. Lo puse en un segundo plano porque no tenía tiempo ni paciencia para la compilación-depuración-despliegue-validación Ciclo que requiere Java. Ahora tengo escrito la aplicación en Clojure, y estoy muy contento por la facilidad de Haciendo cambios sobre la marcha y siendo capaz de examinar los resultados inmediatamente. Sin mencionar la alegría. de programación sin bloqueo y de estar liberado de tener que desarrollar (y refactor) jerarquías de clase.
- " MikeM " a través de la clojure@googlegroups.com lista de correo
¿Qué tipos de proyectos se prestan a Java sobre Clojure, y viceversa, y en combinación?
Si desea desarrollar un marco que vaya a ser usado por Java y Clojure, he encontrado que escribir las abstracciones principales (interfaces de clases de base de anuncios) en Java es preferible a escribirlas en Clojure (encuentro el código proxy
).
Si es un usuario de Hibernate o cualquier otro marco que haga un uso intensivo de las anotaciones de Java sin ofrecer una alternativa programática, tendrá algunos problemas, ya que no es trivial emular POJO anotados con las estructuras de datos de Clojure. / p>
Aparte de eso, no he experimentado casos de uso para los cuales Clojure sea menos apropiado que Java; Por supuesto, tiene que hacer frente a la pérdida de la escritura estática, que al principio resulta algo desconcertante, pero tiende a desaparecer.