2008-10-08 16 views
27

Después de descubrir Clojure he pasado los últimos días inmerso en ella.¿Cómo puedo hacer la transición de Java a Clojure?

¿Qué tipos de proyectos se prestan a Java en Clojure, viceversa, y en combinación?

¿Cuáles son los ejemplos de programas que nunca hubieras intentado antes de Clojure?

+1

¡Nunca he oído hablar de eso! ¡Pero es Lisp! ¡Viva! ¡Lisp regresa! –

+0

Estoy interesado en saber la respuesta a esto también. Me gustaría saber más sobre Clojure. –

+0

@Andre Bossard: nunca se fue. Pero ahora con respecto a Clojure específicamente, definitivamente ayudó a Lisp a convertirse en "corriente principal". Varias startups están usando Clojure y se cree que hay al menos decenas de miles de programadores de Clojure: ese lenguaje simplemente está pateando el culo. Tenga cuidado con el sarcasmo la próxima vez: nunca después de cuántos años su sarcasmo innecesario terminará pareciendo tonto. –

Respuesta

14

Clojure se presta bien al concurrent programming. Proporciona herramientas tan maravillosas para tratar con subprocesos como memoria transaccional de software y referencias mutables.

Como demostración para Western Mass Developer's Group, Rich Hickey realizó una simulación de colonia de hormigas en la que cada hormiga era su propia hebra 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. Puede consultar su presentation on the ant colony here.

+0

Las grandes mentes piensan igual :) Rick y yo estábamos en la presentación simultánea que Rich Hickey hizo en Northampton a principios de este año. –

+0

¿Alguien sabe dónde encontrar el origen de esta demo de colonia de hormigas? –

+0

Ant Colony Fuente: http://clojure.googlegroups.com/web/ants.clj –

6

Si va a probar la programación simultánea, entonces creo que clojure es mucho mejor que lo que obtiene de Java de fábrica. Echar un vistazo a esta presentación para ver por qué:

http://blip.tv/file/812787

he documentado mis primeros 20 días con Clojure en mi blog

http://loufranco.com/blog/files/category-20-days-of-clojure.html

Empecé con las conferencias SICP y luego construyeron un paralelo tamiz de número primo. También jugué con macros.

+0

@LouFranco: Oh hey, sí, leí todas sus publicaciones de anoche, no hice la conexión antes, lo siento. Fue muy informativo, gracias. :) He visto todos los videos @ blip y he leído muchos blogs y también los tuyos. Realmente me estoy preguntando sobre la viabilidad de saltar el barco por completo. –

+0

El mayor problema para mí es la interpretación de mensajes de error del compilador. Se vuelve más fácil con el tiempo. No tengo un proyecto en este momento que quiera ejecutar en la JVM, pero si lo hiciera, estaría en Clojure. –

4

¿Qué tipos de proyectos se prestan para el uso de Java sobre Clojure, vice-versa , o en combinación?

Un proyecto en el que una herramienta de creación de interfaz gráfica de usuario (como Matisse en Netbeans) es necesario sería un caso en el que puede siendo necesaria Java. Cualquier cosa hecha en Java se puede hacer fácilmente en Clojure , con proxy y gen-class si es necesario , o simplemente accediendo a Java como necesario (., Doto, nuevo, etc.). Este permite a los proyectos Clojure usar fácilmente las bibliotecas de Java o el código heredado de Java.

¿Qué programas nunca hubieras intentado antes de Clojure?

Antes de encontrar Clojure, yo era contemplando un proyecto que requiere JDBC, se ejecutaría en un contenedor de servlets , y prevé hacer un montón de desarrollo iterativo porque que no estaba claro qué métodos haría trabajo para los datos que necesitaba analizar. Lo puse en un segundo plano porque I no tenía el tiempo o la paciencia para la compilación-depuración-despliegue-validación ciclismo que Java requiere. Ahora he escrito la aplicación en Clojure, y estoy muy contento de la facilidad de haciendo cambios sobre la marcha y siendo capaz de examinar los resultados inmediatamente.Sin mencionar la alegría de de la programación sin bloqueos y ser liberado de tener que desarrollar jerarquías de clase (y refactor).

- "mikem" a través de la lista de correo [email protected]

tipos
+0

¿Usó alguna estructura para hacer un servlet de Clojure? – Pablo

+0

@ J.PabloFernández: Sugeriría que vayas al grupo Clojure @ Grupos de Google y hagas tu pregunta. Hay muchos usuarios experimentados junto con el creador de Clojure Rich Hickey. –

2

qué proyecto se prestan a Java sobre Clojure, viceversa, y en combinación?

Si se quiere desarrollar un marco que se va a consumir por Java y Clojure, he encontrado escrito las principales abstracciones (clases de interfaces de anuncios de bases) en Java para ser preferible a escribirlos en Clojure (Encuentro Clojure's gen-class es algo tedioso y más bien usa proxy).

Si usted es un usuario de Hibernate o cualquier otro marco que haga un uso intensivo de anotaciones 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.

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.

Cuestiones relacionadas