Clojure
Un dialecto de Lisp construido sobre estructuras de datos inmutables, que corre en la máquina virtual de Java.
27 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 2007
- Creado por
- Rich Hickey
- Tipado
- Dinámico y fuerte; los valores son inmutables, todo son datos
- Los fragmentos siguen
- 1.12
- Extensiones de archivo
- .clj, .cljs, .cljc, .edn
Para qué sirve
Clojure es lo que pasó cuando un Lisp se tomó en serio la JVM: Nubank opera sobre él el banco digital más grande de América Latina, el pipeline de recibos de Walmart y la analítica de Netflix se apoyan en él, y ClojureScript compila el mismo lenguaje a JavaScript para el front end. Cualquier biblioteca de Java queda a una llamada de interop de distancia, así que el ecosistema fue enorme desde el primer día.
La idea distintiva son las estructuras de datos persistentes e inmutables por defecto: vectores, mapas y conjuntos que 'cambian' compartiendo estructura con su pasado a bajo costo. La mayoría de los programas son pipelines de map, filter y reduce encadenados con las macros ->, y el estado que de verdad tiene que cambiar vive en un átomo que actualizas con una función pura. Es el diseño que convirtió 'la programación orientada a valores' en una frase que hoy usan otras comunidades.
Como buen Lisp, aquí el código también es dato, pero Clojure gasta ese poder de manera distinta a sus antepasados: menos en macros y más en tratar cada problema como mapas y keywords simples que puedes inspeccionar en el REPL. El flujo de trabajo tiene fama de interactivo — evalúas una forma, hurgas el sistema en marcha, construyes el programa desde adentro — y EDN, la notación de datos en la que se escribe el lenguaje, es a la vez su respuesta a JSON.
De dónde viene
Rich Hickey pasó dos años financiándose solo para escribir Clojure y lo publicó en 2007 con una justificación de diseño que casi ningún lenguaje llega a tener: un Lisp, pero con la inmutabilidad por defecto, hospedaje sin fricción en la JVM y sintaxis literal para mapas y vectores, no solo para listas. Los primeros adoptantes llegaron por sus charlas — ver 'Simple Made Easy' se volvió obligatorio mucho más allá de la comunidad.
ClojureScript (2011) reorientó el lenguaje hacia JavaScript, y los años 2010 construyeron la identidad de sus herramientas: Leiningen y después deps.edn, los editores guiados por el REPL, y spec para describir datos. Datomic, la base de datos de Hickey construida sobre las mismas ideas de valores inmutables, mostró que la filosofía escalaba hasta la infraestructura.
El lenguaje se asentó en una estabilidad deliberada — las versiones son pequeñas, los cambios que rompen son casi tabú y el código de 2010 todavía corre. La compra de Cognitect, la empresa detrás del lenguaje, por parte de Nubank en 2020 puso el peso de un banco tras su custodia, y Clojure sigue siendo el Lisp más desplegado en la industria.
Cómo se siente teclearlo
Teclear Clojure es la cadencia de Lisp con delimitadores más variados: paréntesis para las llamadas, corchetes para los vectores, llaves para los mapas, #{} para los conjuntos, y los pares dentro de un mapa literal no llevan comas. Los keywords empiezan con dos puntos y aparecen todo el tiempo — como claves, como funciones, en la desestructuración con :keys — y las flechas de encadenamiento -> y ->> abren muchas líneas. Los nombres en kebab-case con guiones hacen que la tecla del menos nunca descanse.
27 pasos en 1 tours, desde lo básico hasta programas completos.