Por qué Lisp merece la pena: extensibilidad, homoiconicidad y macros

Fuentes: A road to Lisp: Why Lisp

Este artículo explica las características que hacen de Lisp un lenguaje de programación singular y por qué aprenderlo puede transformar la manera de pensar de cualquier programador. Lisp, cuyo nombre proviene de LISt Processing, se basa en expresiones simbólicas (s-expr) que pueden ser átomos o listas; los programas son listas y, al mismo tiempo, las listas son la principal estructura de datos, una propiedad conocida como homoiconicidad.

La pieza central del artículo es la extensibilidad del lenguaje mediante macros. A diferencia de las macros de C, Rust o Swift, pensadas para eliminar código repetitivo, las macros de Lisp permiten crear nuevos constructos que pasan a formar parte del propio lenguaje: el programador puede añadir, por ejemplo, un operador while inexistente en Common Lisp definiendo un defmacro. La clave está en que las macros no evalúan sus argumentos de antemano, sino que los tratan como datos y los transforman antes de que el compilador los ejecute; esta manipulación puede inspeccionarse con macroexpand.

El texto recorre también otros pilares del lenguaje: el REPL como entorno interactivo de desarrollo, el sistema de condiciones y reinicios para el manejo de errores, los paquetes y símbolos para organizar proyectos, y la notación polaca como sintaxis básica. Frente a las dificultades iniciales —la abundancia de paréntesis, la sangría inusual, conceptos como format o progn—, el autor defiende que Lisp obliga a un cambio de mentalidad algorítmica y permite adaptar el lenguaje al problema, no al revés. Aunque no todos los lectores acabarán usando Lisp en su día a día, el artículo sostiene que la experiencia proporciona una perspectiva nueva sobre lo que un lenguaje de programación puede ofrecer.