366 bytes por sistema: cómo el código ofuscado consiguió que Linux cupiera en apenas nueve líneas

366 bytes por sistema: cómo el código ofuscado consiguió que Linux cupiera en apenas nueve líneas

Un experimento en un concurso acabó siendo, inesperadamente, mucho más que entretenimiento.

image

Incluso el código intencionalmente ofuscado a veces aporta utilidad práctica, y los resultados del 29.º Concurso Internacional de Código Ofuscado en C (IOCCC) mostraron un caso tan raro. El jurado seleccionó 23 trabajos, y uno de los más notables fue un emulador de la arquitectura Subleq, que Adrian Cable colocó en apenas 366 bytes.

Subleq pertenece a la familia de ordenadores de una sola instrucción. El procesador solo sabe restar números y saltar a otra parte del programa si el resultado es menor o igual que cero. Una arquitectura extremadamente simple es fácil de reproducir en distintos sistemas, por lo que resulta adecuada para conservar programas antiguos después de la desaparición del hardware original.

El proyecto Eternal Software Initiative ya había creado antes un compilador de C para Subleq basado en LLVM, portó Linux y añadió bibliotecas para C y C++. El diminuto emulador de Cable mostró el conjunto de Mandelbrot en color, el juego Pong, Linux y varias aplicaciones. Para la salida gráfica el programa usa SDL, pero todo su código principal ocupa nueve líneas.

Entre otros ganadores estuvo Nick Craig-Wood, que escribió un emulador funcional de la Nintendo Game Boy original en 66 líneas de C. Otro de sus programas combinó la emulación del Commodore 64 con el lenguaje FRACTRAN, y un tercero implementó Forth y generaba una imagen giratoria del conjunto de Mandelbrot.

Yusuke Endo recibió tres premios de una vez y llevó su número de victorias en el concurso a 23. Una de sus obras imitaba lámparas de visualización, iluminando los dígitos directamente en su propio código fuente. Otra se reescribía y recompilaba constantemente para producir el código de una herramienta de comparación de archivos.

La mecánica de juego más inusual la mostró Jona Ullenberg. Su Pong funciona a la vez como programa, pantalla del juego y su propio código fuente. Tras cada pulsación de tecla, el programa cambia la disposición de los caracteres y crea una nueva versión de sí mismo, que debe compilarse de nuevo para el siguiente fotograma.

El concurso IOCCC se celebra desde 1984, y las obras se evalúan por la inventiva y el uso inusual del lenguaje C. Los resultados del certamen mostraron que el código intencionadamente críptico puede no solo entretener, sino también ofrecer ideas prácticas para la emulación y la preservación de programas.