¿Cómo puedo hacer la transición de Java a Clojure?
functional-programming use-case (4)
Si vas a probar la programación concurrente, entonces creo que clojure es mucho mejor que lo que obtienes de Java de la caja. Echa 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 paralelo de números primos. También jugué con macros.
Después de descubrir Clojure , he pasado los últimos días inmerso en ella.
¿Qué tipos de proyectos se prestan a Java sobre Clojure, viceversa, y en combinación?
¿Cuáles son los ejemplos de programas que nunca hubieras intentado antes de Clojure?
Clojure se presta bien a la programación simultánea . Proporciona herramientas tan maravillosas para tratar con subprocesos como memoria transaccional de software y referencias mutables.
Como una demostración para el Western Mass Developer''s 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 es solo porque Rich es un programador increíble, sino también porque no tuvo que preocuparse por el bloqueo mientras escribía su código. Puedes ver su presentación sobre la colonia de hormigas aquí .
¿Qué tipos de proyectos se prestan para usar Java sobre Clojure, viceversa, o en combinación?
Un proyecto en el que se necesita una herramienta de construcción de GUI (como Matisse en Netbeans) sería un caso en el que todavía se podría requerir Java. Cualquier cosa hecha en Java se puede hacer en Clojure con bastante facilidad, con proxy y gen-class si es necesario, o simplemente accediendo a Java según sea necesario (., Doto, nuevo, etc.). Esto permite que los proyectos de Clojure puedan usar fácilmente las bibliotecas de Java o el código de legado de Java.
¿Qué programas nunca hubieras intentado antes de Clojure?
Antes de encontrar a Clojure, estaba contemplando un proyecto que requería JDBC, que se ejecutaría en un contenedor de servlets, y anticipé un gran desarrollo iterativo porque no estaba claro qué métodos funcionarían para los datos que necesitaba analizar. Lo dejé en segundo plano porque no tenía tiempo ni paciencia para el ciclo compilación-depuración-implementación-validación que requiere Java. Ahora escribí la solicitud en Clojure, y estoy muy contento de la facilidad de hacer cambios sobre la marcha y de poder examinar los resultados de inmediato. Por no mencionar la alegría de la programación sin bloqueos y la liberación de tener que desarrollar (y refactorizar) jerarquías de clase.
- "MikeM" a través de la lista de correo de [email protected]
¿Qué tipos de proyectos se prestan a Java sobre Clojure, viceversa, y en combinación?
Si quieres desarrollar un framework que sea consumido por Java y Clojure, he encontrado que escribir las abstracciones principales (interfaces y clases base de anuncios) en Java es preferible a escribirlas en Clojure (me parece que la gen-class
de Clojure es algo tedioso y más bien usar proxy
).
Si usted es un usuario de Hibernate o cualquier otro marco que haga un uso intensivo de las anotaciones Java sin ofrecer una alternativa programática, tendrá algunos problemas, ya que no es trivial emular los POJO anotados con las estructuras de datos de Clojure.
Aparte de eso, no he tenido casos de uso para los cuales Clojure es menos apropiado que Java; tienes que lidiar con la pérdida de tipeo estático, por supuesto, que al principio se siente un poco desconcertante, pero tiende a desaparecer.