Desde hace algunas semanas estoy aprendiendo Lisp. Estoy bien cómodo programando en Python, y he aprendido bastante dando clases de Java. Pero Lisp tiene algunas cosas que no tienen esos lenguajes (y ningún otro, al parecer), y que me interesa aprender, en particular la capacidad de extender la sintaxis del lenguaje como práctica habitual de programación. Esto en Lisp se llama Macros, y no tienen nada que ver con los macros como se entienden en C/C++. Como siempre, hay que sacar tiempo de donde no hay, así que estoy yendo más lento de lo que quisiera.

Los ensayos de Paul Graham son muy buenos y sugerentes, y el libro Hackers and Painters tampoco tiene pierde. Obviamente no quiere decir que coincida 100% con lo que dice, pero habla bastante de Lisp, por no decir que está absolutamente entusiasmado con Lisp.

Estoy usando dos libros: Practical Common Lisp, de Peter Siebel, que se puede descargar sin costo del website de APress. Y ANSI Common Lisp, de Paul Graham, que compré en Amazon.

Menos bla,bla,bla, quiero empezar a escribir programas…

Primera tarea, instalar alguna versión de lisp en la computadora. En Ubuntu:

Ya tenemos lisp en la computadora. Ahora basta escribir:

Common Lisp Linux

Practical Common Lisp recomienda usar Emacs como editor de texto/entorno de desarrollo y la extensión SLIME (Superior Lisp Interaction Mode for Emacs). (Más información sobre Emacs, ver Wikipedia.) Por ahora voy a seguir los consejos del libro, así que a instalar Emacs y Slime.

Intenté usar la versión de Emacs que está en los repositorios de Ubuntu, y que se integra con Gnome. Pero las letras en la pantalla se veían francamente horribles. Creo que la pantalla del Macro Assembler que tenía en la Atari 800XL que usaba en el siglo 20 se veía mejor. Bien, siempre hay soluciones. Buscando en Google “pretty emacs”, encontré esta página, donde se explica cómo instalar una versión de Emacs más reciente, compilada para que haga un render decente de los fonts. En la imagen se puede ver el resultado.

Emacs pretty fonts thumb

Segundo paso, aprender lo suficiente de Emacs como para crear un programa, guardarlo en un archivo y compilarlo. Emacs tiene fama de ser poco amigable, y lo es. En este post Erik Rasmussen explica con gracia cómo al comienzo no se explicaba por qué si Lisp es un lenguaje superior e increíble, es tan poco usado. Al menos eso es lo que se preguntaba él hasta que intentó usar Emacs.

El némesis de Emacs es vim, otro editor muy común en Linux. vim es poderoso. He desarrollado websites enteros usando vim. Incluso cuando estoy usando un procesador de texto me sorprendo a veces teclando “:w”, que es el comando de vim para guardar el archivo. Pero la verdad que entre perder tiempo tratando de que Lisp y vim se entendieran, preferí dedicar veinte minutos a seguir el tutorial de que trae el mismo Emacs. (Se accede al tutorial presionando Ctrl-h t. O, como dicen en Emacs, C-h t.) Y confirmado: veinte minutos bastan para empezar y moverse en Emacs.

Uno de los comentarios del post de Rasmussen dice que hay un plugin de lisp para Eclipse: más adelante le daremos una oportunidad.

Tercer y último paso, instalar SLIME. Slime es un entorno de desarrollo para programar en Lisp dentro de Emacs. En Ubuntu se puede instalar escribiendo:

Como se explica aquí, también es necesario añadir lo siguiente al archivo ~/.emacs:

Listo. Ahora sí, en Emacs: M-x slime, y aparece SLIME.

SLIME

Y podemos escribir: (hello-world).