Clojure: un lenguaje de programación funcional

Clojure (creado por Rich Hickey) es un lenguaje funcional moderno que corre sobre la JVM, ideal para desarrolladores Java que buscan mayor expresividad y simplicidad. Su filosofía se centra en la inmutabilidad, la programación funcional pura y la interoperabilidad con el ecosistema Java.

Combina la simplicidad de Lisp con la potencia del ecosistema Java. Se usa para aplicaciones concurrentes, sistemas distribuidos, análisis de datos y servicios web.

Filosofía del lenguaje

  • Inmutabilidad por defecto: las estructuras de datos no cambian, lo que evita errores comunes en concurrencia. 
  • Programación funcional: funciones puras, composición y expresividad. 
  • Interoperabilidad total con Java: puedes llamar librerías Java directamente desde Clojure
  • Simplicidad y REPL-driven development: trabajar de forma interactiva, probando código en tiempo real.

Instalación:

En Mac OS:

$ brew install clojure/tools/clojure

En Linux (Debian/Ubuntu):

$ sudo apt install clojure

En Linux (Debian/Ubuntu) con el instalador:

$ curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
$ chmod +x linux-install.sh
$ sudo ./linux-install.sh

En Windows tenemos dos opciones:

  1. Usar el instalador: https://github.com/casselc/clj-msi
  2. Usar WSL: https://learn.microsoft.com/en-us/windows/wsl/install

Hola mundo en Clojure

Vamos a crear un simple programa, el clásico "Hola, mundo" en Clojure. Lo guardaremos con al extensión *.clj

hola.clj

(println "Hola, mundo")

Ejecutamos:

$ clj hola.clj

Salida:

Hola, mundo

Roadmap para ser desarrollador Clojure

Miremos la siguiente tabla donde se indica la ruta a seguir para convertirse en desarrollador Clojure.

Etapa Objetivo Acciones prácticas Recursos recomendados
1. Instalación y entorno Configurar Clojure en tu máquina - Instalar Java 8+
- Instalar Clojure CLI
- Probar el REPL con (println "Hola, mundo")
Documentación oficial de Clojure CLI
2. Fundamentos del lenguaje Aprender sintaxis y estructuras básicas - Practicar con listas, vectores, mapas
- Usar funciones map, reduce, filter
- Comprender inmutabilidad
Clojure.org - Getting Started
3. Filosofía funcional Adoptar el paradigma funcional - Escribir funciones puras
- Evitar estado mutable
- Explorar recursión y composición
Libro: "Clojure for the Brave and True"
4. Interoperabilidad con Java Aprovechar librerías y ecosistema existente - Llamar clases Java desde Clojure
- Integrar librerías conocidas (JDBC, Spring)
- Migrar pequeñas piezas de lógica
Guía oficial: Java Interop
5. Desarrollo práctico Construir proyectos reales - Crear un microservicio con Luminus
- Usar Leiningen o deps.edn para gestionar dependencias
- Experimentar con librerías de concurrencia
Luminus Framework, Leiningen docs
6. Concurrencia y escalabilidad Dominar herramientas avanzadas - Explorar agentes, refs y atoms
- Usar core.async para concurrencia
- Diseñar sistemas distribuidos
core.async docs, ejemplos en GitHub
7. Comunidad y buenas prácticas Aprender de otros desarrolladores - Participar en foros y Slack de Clojure
- Leer código abierto en Clojure
- Seguir convenciones de estilo
ClojureVerse, repositorios en GitHub

Clojure, al igual que lenguajes como Erlang o Haskell, obligan a al programador que viene de lenguajes como C, Java o Python a pensar de otra manera. No solo por el paradigma sino en el estilo de escribir código, pues éste toma mucha isnpiración de lenguajes como LISP, un lenguaje para crear otros lenguajes.

El uso de paréntesis se volverá el pan de cada día.

Seguiremos hablando del lenguaje en próximas entregas.

Enlaces:

https://alquimistadecodigo.blogspot.com/2020/08/clojure-for-beginners.html
https://clojure.org/

Comentarios

Entradas populares