online - clojure vs scala
¿Para qué sirve Clojure? (5)
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 guiones 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 concurrencia. 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, uno debe 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 por derecho propio, 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.
¿Para qué aplicaciones del mundo real están usando Clojure las personas?
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 un fanboy de ninguna manera, pero me sorprende que tiene un mejor marco de soporte, herramientas y muchos de los constructos del 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?
Clojure se está utilizando ampliamente para procesar grandes volúmenes de datos. Es muy adecuado para la 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.
He usado Clojure para:
- Raspado de páginas web
- Guiones de Shell
- Creación de sitios web
- Jugando con OpenGL
- Escribir servidores web asíncronos
- Templating HTML
- Ejecución de tareas paralelas (obtención de varias URL y proceso en paralelo)
- Jugar con audio en tiempo real
- Simulaciones
Esa es la cosa práctica / divertida.
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 lingüísticas para organizar el software correctamente (sin causar un dolor indebido al programador que trabaja) de todos los idiomas 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 ahí fuera.
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 no les gusta el ceceo. Esos elegirán Groovy.
Tal vez comenzar con el rationale Rich Hickey.
En cuanto a las aplicaciones del mundo real, ¿qué hay de esta lista de uso de producción del grupo de google?