tutorial - Ventajas de Clojure
clojure vs java (2)
En general encuentro como puntos fuertes para el clojure (en ningún orden en particular):
1) El REPL para probar cosas de forma interactiva.
2) Todo es inmutable por defecto y la mutabilidad tiene varios patrones estándar bien elegidos para modificar el estado de manera segura en un entorno de multiproceso.
3) La recursión de la cola se hace explícita. Hasta que haya un soporte adecuado para la recursión de la cola en la JVM, este es probablemente el mejor compromiso
4) Lenguaje muy expresivo que favorece un enfoque funcional sobre un enfoque imperativo.
5) Muy buena integración con la plataforma Java, lo que hace que sea fácil de mezclar en las bibliotecas de Java
6) Leiningen como herramienta de gestión de compilación y dependencia junto con el sitio clojars
Ok, el punto 6 no tiene nada que ver con el lenguaje perse, pero definitivamente con mi placer de usarlo.
Con respecto a las aplicaciones, se enfoca en aplicaciones de subprocesos múltiples, pero la forma en que se desarrollan las cosas en este momento podría significar cualquier cosa, ya que en todas partes la gente intenta mantener todos esos núcleos ocupados mientras el usuario no está esperando. Por otro lado, aparentemente mucha gente lo usa para implementarlo en el motor de aplicaciones de Google, el cual es radicalmente UNICO.
El enfoque funcional funciona bien en mi (limitada) experiencia para implementar transformaciones de datos y cálculos. Donde la información y los eventos se pueden ''transmitir'' a través de la aplicación. Las aplicaciones web caen en gran medida en esta categoría en la que "transformamos" una solicitud en una "respuesta".
Pero todavía tengo que usarlo en código de producción real. Actualmente lo uso para proyectos personales y prototipado / benchmarking.
¿Alguien puede señalar las ventajas de Clojure y para qué tipo de aplicaciones es adecuado?
No pretendo compararlo con ningún idioma como tal. Como lenguaje en sí mismo, ¿para qué es adecuado? Mi intención es conocer las herramientas adecuadas para el trabajo correcto y dónde encajan las personas en ese tipo de escenario.
Ventajas:
- Todos los beneficios de la programación funcional, sin la camisa de fuerza de pureza.
- lispy: permite código dinámico y compacto con enlace tardío, macros, métodos múltiples
- Interoperabilidad de Java
- Puede codificar funciones para secuenciar la abstracción en lugar de estructuras de datos específicas.
- golosinas de concurrencia incorporadas en: estructuras de datos funcionales, software de memoria transaccional
- se ejecuta en la JVM: portabilidad y recolección rápida de basura
Adecuado para:
- diseño de abajo hacia arriba
- lenguajes integrados
- aplicaciones altamente concurrentes
Probablemente no es adecuado para:
- casos en los que desea escribir estática
- Si quieres que el lenguaje sea susceptible de análisis estático.
- Cualquier cosa que necesite un tiempo de arranque rápido.
- hordas de monos Java despistados