¿Para qué sirve Clojure? [cerrado]


¿Para qué aplicaciones del mundo real están las personas usando Clojure?

Uso Groovy para cosas de pegamento, Java para sistemas grandes, scripts Python/Perl para analizar y glue. Podía verme a mí mismo llamando 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 maravilloso o un fanboy de ninguna manera, pero me llama la atención que tiene un mejor marco de soporte, herramientas y mucho de las construcciones del lenguaje (cierres, programación funcional). Lo mismo podría decirse de Scala.

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

 87
Author: nmichaels, 2010-11-23

5 answers

He usado Clojure para:

  1. Raspado de páginas web
  2. Scripts de shell
  3. Creación de sitios web
  4. Jugando con OpenGL
  5. Escribir servidores web asincrónicos
  6. Plantillas HTML
  7. Ejecutando tareas paralelas (obteniendo múltiples URLs y procesos en paralelo)
  8. Jugando con audio en tiempo real
  9. Simulaciones

Eso es lo práctico / divertido.

Pero Clojure también tiene mucha profundidad teórica. Ideas que lo harán se vuelven cada vez más relevantes a medida que la corriente principal llega a comprender realmente el potencial de la Programación Funcional.

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

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

 73
Author: dnolen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-23 21:10:32

Tal vez empezar con Rich Hickey razón.

En cuanto a las aplicaciones del mundo real, ¿qué tal esta lista de uso de producción del grupo Google?

 18
Author: Corbin March,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-23 20:33:48

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

 15
Author: Arthur Ulfeldt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-24 00:28:19

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 fuera de los scripts de línea de comandos debido al tiempo de inicio de JVM (a menos que esté utilizando cake o algo similar), pero eso se puede decir para cualquier lenguaje JVM.

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

Sin embargo, uno debe recordar que el Clojure es un lenguaje de propósito general. No solo es adecuado para ciertos nichos, y tiende a ser útil para muchas o todas las cosas para las que los otros lenguajes JVM podrían ser adecuados.

Clojure fue diseñado para ser un lenguaje fantástico por derecho propio, y no necesariamente un lenguaje de pegamento. Puede construir sistemas desde el suelo en Clojure sin tocar el código Java directamente. No es que no sea un buen lenguaje de pegamento, sé que mucha gente lo ha usado como tal.

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

 12
Author: Rayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-23 20:40:07

Puede usar Clojure en cualquier lugar que use Groovy o java. ¿Por qué querrías hacer eso ? A algunas personas les gusta Lisp. Esos elegirán clojure sobre Groovy. A algunas personas no les gusta Lisp. Esos elegirán Groovy.

 6
Author: Vagif Verdi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-27 02:41:36