2010-11-23 31 views
76

¿Para qué sirve el mundo real las personas que usan Clojure?¿Para qué sirve Clojure?

Uso Groovy para cosas de pegamento, Java para sistemas grandes, scripts de Python/Perl para analizar y pegar. Pude verme llamar a Clojure desde Java pero no puedo ver dónde lo usaría por derecho propio. Me parece que sería más fácil usar casi cualquier lenguaje de scripting para tareas adhoc.

No soy un experto en Groovy o fanboy de ninguna manera, pero me da la impresión de que tiene un mejor marco de soporte, herramientas y muchas construcciones de lenguaje (cierres, programación funcional). Lo mismo podría decirse de Scala.

¿Podría ser que su futuro sea como un lenguaje incrustado en otros sistemas?

+17

Todo excepto hacerme un sándwich. – wheaties

+10

@wheaties: ¿Has probado '(sandwich me BLT)'? – FrustratedWithFormsDesigner

+0

Groovy también es más viejo que Clojure también. Las herramientas no están escritas mágicamente y son estables durante la noche. – Rayne

Respuesta

69

He usado Clojure para:

  1. páginas web raspado
  2. guiones
  3. Shell
  4. construcción de sitios web
  5. jugar con OpenGL
  6. servidores web asincrónicos
  7. escritura
  8. de plantillas HTML
  9. Ejecución de tareas paralelas (recuperación de varias URL y d proceso en paralelo)
  10. Jugando con audio en tiempo real
  11. Simulaciones

Ese es el material práctico/divertido.

Pero Clojure también tiene mucha profundidad teórica. Las ideas que serán cada vez más relevantes a medida que la corriente principal llegue a comprender realmente el potencial de la Programación Funcional.

Una opinión personal, pero Clojure ofrece mejores construcciones de lenguaje para organizar correctamente el software (sin causar dolor innecesario al programador) de todos los idiomas que he utilizado hasta ahora académica y profesionalmente - C, C++, Objective- C, Java, JavaScript, Python, Ruby.

Lo que no quiere decir Clojure es perfecto. Pero me parece que está construido sobre una base mejor que la mayoría de lo que hay ahí fuera.

+0

¿Eres David Nolen? el tipo que dio la charla sobre "Clojurescript: Lisp's Revenge". ¡Fue una gran charla! –

+0

//, ¿a qué te refieres con "proporciona mejores construcciones de lenguaje para organizar el software correctamente"? E.G. http://dev.clojure.org/display/community/Library+Coding+Standards? –

+0

Shell script? ¿Tuviste algún problema con el lento tiempo de inicio de Clojure? – masnun

12

Bueno, esa es una pregunta difícil de responder. ¿Qué quieres hacer? No hay mucho para lo que Clojure no sea adecuado. Quiero decir, no es realmente genial para uno de los scripts de línea de comandos debido al tiempo de inicio de JVM (a menos que esté usando cake o algo similar), pero eso se puede decir de cualquier lenguaje JVM.

Clojure es especialmente adecuado para tareas de simultaneidad. Fue construido desde cero para ser un lenguaje impresionante para la concurrencia, y su sistema STM es fantástico. Si necesita hacer algunas cosas relacionadas con la concurrencia hardcore, Clojure podría ser especialmente adecuado para esa tarea.

Sin embargo, hay que recordar que Clojure es un lenguaje de propósito general. No solo se adapta a ciertos nichos, y tiende a ser útil para muchas o todas las cosas que los otros lenguajes de JVM pueden ser adecuados.

Clojure fue diseñado para ser un lenguaje fantástico en sí mismo, y no necesariamente un lenguaje de pegamento. Puedes construir sistemas desde cero en Clojure sin tocar el código Java directamente. No es que no sea un buen lenguaje de pegamento, sé que muchas personas lo han usado como tal.

Si tiene algo en mente, lo mejor que puede hacer es considerar cómo se vería la solución en los idiomas que sean opciones. Si se ve/se siente mejor en Groovy, ve con Groovy. Ambos son idiomas radicalmente diferentes, y ambos tienen sus propósitos.

+0

Incluso entonces me encontré escribiendo scripts de CLI Clojure, solo porque encontré el lenguaje agradable para escribir y no me importó el tiempo de inicio en mi caso. – nha

15

Clojure se está utilizando ampliamente para el procesamiento de grandes volúmenes de datos . Es muy adecuado para minería de datos/comercial-AI (es decir: Runa) y predicciones a gran escala (también conocido como WeatherBill). La historia de concurrencia de Clojure realmente ayuda en estos dominios pesados ​​de datos donde el procesamiento paralelo es simplemente la única respuesta.

5

Puede usar Clojure en cualquier lugar donde use Groovy o java. ¿Por qué querrías hacer eso? Algunas personas les gusta lisp. Esos elegirán clojure sobre Groovy. A algunas personas les disgusta el ceceo. Esos elegirán Groovy.

+0

No es sólo una cuestión de elección, clojure tiene toneladas de características que ningún otro idioma tiene) de alguna manera nadie mencionó nada, apenas recuerdo las charlas en conferencias, así que no podré escribir una respuesta adecuada aquí – holms