CLOJURE



Clojure es un lenguaje de programación de propósito general dialecto de Lisp. Hace un énfasis especial en el paradigma funcional, con el objetivo (entre otros) de eliminar la complejidad asociada a la programación concurrente. Clojure puede ser ejecutado sobre la Máquina Virtual de Java y la máquina virtual de la plataforma .NET, así como compilado a JavaScript.



Ventajas de Clojure sobre otros lenguajes


- El código en clojure es de 1 a 10 ordenes de magnitud mas pequeño que en java, esto es, de 10 a 100 veces menos código.

- Recursión BIEN implementada

- Tiene una repl (Desarrollo dinámico con una consola de evaluación)

- Funciones son objetos de primera clase 

- Listas perezosas (podemos tener programados TODOS los números naturales sin ningún problema de memoria)

- Amplio conjunto de Estructuras de datos, vectores, mapas, listas, por mencionar algunos

- Produce código de la JVM

- Puedes utilizar Clases de Java para trabajar con Clojure!

Características
Características del lenguaje

* Desarrollo dinámico con una consola de evaluación (en inglés, REPL: read eval print loop).

*Representación de funciones como valores, y preferencia por la recursión y el uso de higher order funciones sobre de la alternación basada en efectos secundarios.

*Números de precisión arbitraria, y representación literal de fracciones, generadas en las divisiones no enteras.

*Secuencias con evaluación perezosa (los elementos de la secuencia no se computan hasta que son necesarios, lo que permite representar conjuntos infinitos en potencia).

*Sistema integrado de estructuras de datos persistentes e inmutables.

*Control del estado (conjunto de valores que puede adquirir una entidad en el tiempo) en situaciones de concurrencia a través de sistemas transaccionales, de agentes y mediante bindings locales.

*Interacción con java: al compilarse a bytecode de la JVM, las aplicaciones escritas en Clojure pueden ser fácilmente integradas en servidores de aplicaciones u otros entornos Java con escasa complejidad adicional. Se implementan por defecto todas las interfaces posibles a nivel de clases, estructuras de datos y concurrencia para minimizar los esfuerzos requeridos para conseguir esta portabilidad.





No hay comentarios:

Publicar un comentario