Clojure: Más sobre Concurrencia

El término closure (clojure en francés y cláusula en castellano) se emplea en informática (según la wikipedia) como: una función que es evaluada en un entorno conteniendo una o más variables dependientes de otro entorno.; o dicho de otra forma, lo que se conoce como un código evaluado, es decir, procesado y/o compilado en caliente o tiempo de ejecución.

¿Por qué una introducción acerca de closure?, pues porque uno de los lenguajes que comienza a ser muy usado, es precisamente este: clojure.

¿Qué es clojure?

Es un lenguaje concurrente, en definición corta, según su web oficial, es un lenguaje de propósito general, que se compila y ejecuta sobre la JVM, dando la versatilidad de un lenguaje scripting, pero al mismo tiempo la robustez que requieren los programas multihilo.

Además, permite el acceso a frameworks Java, con lo que su integración con los entornos Java hace que sea un lenguaje que compita directamente con Scala, en este campo.

Para los que programan en Java, PHP, Perl, Python, Ruby… ver lenguajes como Haskell, Erlang, Lisp, Prolog o Clojure puede resultar en principio algo chocante, ya que la sintaxis es muy diferente. Es normal, su forma de actuación, lo que se puede hacer con ellos y no con los otros, es también distinto. El cambio de sintaxis, fuera de ser un impedimento, yo lo considero una forma de obligarte a cambiar el chip, antes de comenzar a programar.

¿Y para qué sirve?

Bueno, tanto hablar, tanto hablar… pero, ¿y qué hace este lenguaje?, ¿para qué es bueno? En un primer vistazo, los desarrolladores del mismo te pueden responder de forma rápida: para concurrencia.

Después, más detenidamente, te puedes dar cuenta de que es un tipo lenguaje tipo Lisp, con lo que, no solo es bueno con la concurrencia, sino también con la organización de datos e identificación de forma inteligente… o lo que se suele llamar la inteligencia artificial.

Conclusiones

Lisp es un lenguaje que tengo en la lista de tareas por aprender. A través de clojure, ahora, puedo darle una visión un poco más enfocada a los entornos que se usan actualmente para la programación, de modo que pueda ser más útil que simplemente aprender Lisp.

Por mi parte, recomiendo la elección de este lenguaje a todo aquél que tenga problemas a resolver en entornos que requieran de un procesamiento deductivo y con alta concurrencia, por ejemplo: videojuegos, elementos de telecomunicaciones, etc.