LISP es el segundo lenguaje de programación de alto nivel de mayor antigüedad, habiendo sido creado en 1958 (un año después que FORTRAN y uno antes que COBOL)., una época de notables limitaciones de hardware, a algunos programadores les pareció un buen candidato a un proyecto destinado a insertar un intérprete de un lenguaje de programación dentro del MBR (‘master boot record‘, el primer sector de un dispositivo de almacenamiento) de un viejo diskette.
El primer sector de un diskette tiene un espacio de 512 bytes, que puede usar para ejecutar un software básico desde la BIOS cuando el usuario utiliza el dispositivo en cuestión como dispositivo de arranque del PC.
Gracias a dicho proyecto ya habían nacido SectorFORTH y BootBasic, que en su momento llegaron a ostentar el título de «lenguaje de programación más pequeño del mundo», con 491 y 510 bytes de peso, respectivamente. Sin embargo, LISP (o más bien su adaptación SectorLISP) ha permitido superar dicha marca llegando a alcanzar los 436 bytes.
El proyecto SectorLISP ha logrado su objetivo de crear un LISP que sea lo suficientemente pequeño como para caber en el sector de arranque maestro de un disquete. Hasta donde sabemos, este es el LISP más pequeño hasta la fecha, eso significa que LISP ahora está vinculado con FORTH para ser el lenguaje de programación de alto nivel más liviano del mundo. Para poner eso en perspectiva, considere el siguiente diagrama:
«El objetivo de este proyecto ha sido divertirse construyendo un kit que optimice el tamaño del archivo a expensas de todo lo demás»
Ahí donde el primigenio LISP 1.5 para IBM 7090 ocupaba ya 32.000 bytes, SectorLISP es 73 veces más pequeño, constando tan sólo de 223 líneas de código en ensamblador. Esto se debe, en parte, a una eficiencia del conjunto de instrucciones x86, en parte a una labor de ‘podado’ de funcionalidades, destinada a ofrecer únicamente las funciones básicas de LISP.
Según explican sus creadores:
«Averiguar cómo definir LISP utilizando solo sus operaciones fundamentales es algo más fácil de decir que de hacer».
Esto no significa que estemos ante un lenguaje de programación ‘de juguete’ (como Brainfuck): puede ejecutar sin problemas el asistente de pruebas incluido en LISP 1.5., y hasta permitirnos programar nuestro propio intérprete LISP en 40 líneas del propio lenguaje LISP.
Aquí está el SectorLISP REPL arrancando desde BIOS en un emulador de PC y ejecutando un programa LISP simple que rastrea una estructura de datos en forma de árbol para encontrar el primer símbolo (o átomo) en el árbol. El árbol en cuestión es ((A) B C)entonces la respuesta correcta es A.
Cómo probarlo
Es compatible con todos los modelos de PC que datan de 1981 y que cuenten con al menos 64 kb de RAM. Pero si deseas probarlo en tu actual equipo y careces de unidad de disquete, puedes ejecutar SectorLISP en algún emulador de PC como Blinkenlights. Para ejecutarlo, sigue los siguientes pasos en Linux:
curl --compressed https://justine.lol/blinkenlights/blinkenlights-latest.com >blinkenlights.com
curl https://justine.lol/sectorlisp/sectorlisp.bin >sectorlisp.bin
chmod +x blinkenlights.com
/blinkenlights.com -rt sectorlisp.bin
Ahora, teclea ‘c’ para continuar la ejecución, y asegúrate de poner tu terminal en modo pantalla completa, y de establecer un tamaño de fuente pequeño para poder ver todos los paneles.
Aquí está la lista completa de SectorLISP.