Si los principales lenguajes de programación ya resultan difíciles, imagina uno diseñado para complicar al máximo su compilación y que además trabaje en dos dimensiones, de modo que su ejecución cambie de dirección. En otras palabras, una «máquina de Rube Goldberg» en código. Ese lenguaje existe: se llama Befunge y fue diseñado por Chris Pressey en 1993.
Cada programador tiene un lenguaje favorito, y las comparaciones suelen terminar en discusiones. Pero más allá de las preferencias, siempre hay espacio para la diversión y la rareza. Befunge es exactamente eso: una rareza que merece la pena conocer.
El Hello World en su versión más lineal
El primer ejemplo es un caso bastante lineal del clásico Hello World. El cursor naranja lee el código, el símbolo " inicia una cadena (la cual termina cuando encuentra a otro "), las comas actúan como el Print de Basic, y el arroba finaliza el programa. Así se ve:
Pero el segundo ejemplo es lo mismo, solo que mucho más complicado. El cursor sube y baja, vuelve a subir, cambia de dirección, una auténtica locura. El usuario observa un espacio de 80 x 25 caracteres, pero en realidad tiene forma de toroide: el cursor aparece por el otro lado al cruzar un límite. Los símbolos `< > v ^` marcan la dirección que debe seguir el cursor, y como la pila es Last In First Out, el texto debe estar al revés.
Bucles y generación de números aleatorios
Además de manipular el flujo, Befunge permite crear bucles sin problemas, como se aprecia en este ejemplo:
Y si los bucles te parecen poco, también puede generar números aleatorios. Un simple signo de interrogación asigna una dirección aleatoria al código. ¡Así de sencillo!
Y eso no es todo. La letra `p` permite modificar el código al vuelo, lo que abre un sinfín de posibilidades (y dolores de cabeza).
Especificaciones y veredicto
Existen dos especificaciones oficiales de Befunge: Befunge-93 y Funge-98. Más allá de la elección, cualquier programador tendrá las manos llenas con este lenguaje. El Un viejo texto dedicado a Befunge sugiere que es una mezcla «entre Forth y Lemmings», y creo que no le falta razón.
Si quieres experimentar con él, puedes probarlo en el intérprete en línea: Fuente: