El mundo de los lenguajes de programación es como el de los idiomas. Hay alguno que, por ser el primero que hemos aprendido, nos resulta más fácil o natural, sin serlo necesariamente. Nuestro “español” a la hora de programar puede ser Pascal o Visual Basic. Luego está el lenguaje de facto, C, que es como el inglés: todo el mundo lo chapurrea un poco pero luego pone en el currículum que tiene nivel avanzado/experto.
Pero lo que queremos mostraros hoy son esos lenguajes tan desconocidos como el swahili, tan vistosos como el japonés o tan enrevesados y muertos como el latín. Lenguajes de programación en los que un “Hola mundo” se convierte en una auténtica pesadilla, o que parecen cualquier cosa menos código. He aquí, en un día tan apropiado como hoy, nuestro particular top 5 de lenguajes “que suenan a broma”.
5. Brainfuck
Uno de los grandes clásicos de los lenguajes esotéricos. Brainfuck se caracteriza por utilizar sólo 8 caracteres, con los cuales sólo se puede desplazar un puntero por la memoria e incrementar o decrementar su valor, con lo que el nombre le viene al pelo. Un ejemplo de Hola mundo, que para mayor legibilidad se ha dispuesto con cierta organización, aunque podría ir en una sola línea si quisiésemos hacerlo más confuso:
++++++++++ [ >+++++++>++++++++++>+++++++++++>+++>+< <<<<- ] >++. >>+. —-. < —-. >>++. < +. ++++++++. ———-. <+++. >+. >+. >.
El concepto de Brainfuck ha sido imitado por muchos otros lenguajes, que heredan la estructura, aunque limitándola a tres tipos de operaciones. De alguno de ellos ya hemos hablado en GenbetaDev: Trollscript, la variante troll.
Sin embargo, a mí me gustaría señalar el ejemplo de Ook!, una referencia literaria a la saga Mundodisco, ya que su sintaxis se basa en los tres únicos sonidos que podía hacer un mago de la novela que se convirtió en orangután: ook. ook! y ook? Combinándolos dos a dos se pueden obtener los ocho caracteres de Brainfuck, y en ese punto los lenguajes son básicamente el mismo, aunque con este bonito aspecto:
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
4. Malbolge
Cuando un lenguaje recibe por nombre Malbolge, que es apelativo para el 8º círculo del infierno de La Divina Comedia, ya os podéis imaginar cómo debe ser programar con él. Y es que sus creadores no lo ocultan: Malbolge fue concebido para convertirse en el lenguaje de programación más difícil que exista. Al basarse en teorías criptográficas no es nada fácil descifrar su significado, ya que quién iba a imaginarse que lo siguiente es un Hola mundo:
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<m :9wv6WsU2T|nm-,jcL(I&%$#" `CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@></m>
Os contaría algo más sobre su sintaxis, pero es que sinceramente no la entiendo, así que todo queda en un dogma de fe. Total, tampoco creo que ningún valiente se fuera a atrever con él, ¿no?
3. Chef
Indudablemente los lenguajes de los que hemos hablado hasta ahora son muy complejos, pero al verlos uno sabe que ahí hay algo escondido. Lo que hace realmente original al lenguaje Chef es que nadie podría sospechar que tras unas recetas de cocina exista auténtico código de programación. Veamos un ejemplo de Hola mundo para ilustrarlo mejor:
Hello World Souffle.Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoesMethod.
Put potatoes into the mixing bowl.
Put dijon mustard into the mixing bowl.
Put lard into the mixing bowl.
Put red salmon into the mixing bowl.
Put oil into the mixing bowl.
Put water into the mixing bowl.
Put zucchinis into the mixing bowl.
Put oil into the mixing bowl.
Put lard into the mixing bowl.
Put lard into the mixing bowl.
Put eggs into the mixing bowl.
Put haricot beans into the mixing bowl.
Liquefy contents of the mixing bowl.
Pour contents of the mixing bowl into the baking dish.
Serves 1.
Tras ver esto uno se pregunta ¿hemos hecho un programa o un shufflé? El funcionamiento es relativamente sencillo: los ingredientes son variables, y la cantidad es su valor. El bol de mezclado es una pila y lo que se ha hecho es ir metiéndolos en orden contrario a como queremos que se representen. Et voilà!
2. Piet
Este vistoso lenguaje de programación basa su código en secuencias de colores dispuestas de tal manera que imitan los cuadros del vanguardista neerlandés Piet Mondrian, del que toma su nombre, Piet. La imagen que abre el artículo es un auténtico cuadro del artista holandés, pero mirad qué pinta tiene el típico Hola mundo en Piet:
Para codificar las órdenes se utilizan 20 colores (6 tonos con 3 grados de intensidad, más el blanco y el negro). Las variaciones del puntero vienen determinadas por la diferencia de tono e intensidad entre dos colores contiguos, el negro hace las veces de stopper, ya que no puede ser atravesado al seguir una secuencia de colores, y el blanco… el blanco da relleno, ya que no sirve para nada en este lenguaje. Eso sí, ayuda a que sea bonito, ¿verdad?
1. Whitespace
Para entender bien por qué éste es nuestro número 1, comencemos con un Hola mundo típico en Whitespace:
¿Cómo? ¿Que no veis nada? Pues está ahí, lo juro. Podéis seleccionarlo con el ratón para verlo.
La particularidad de Whitespace es que sólo utiliza tres caracteres: el espacio, la tabulación y el salto de línea. La consecuencia inevitable es un código imposible de descifrar si no se le aplica algún tipo de coloración, marcado o transformación de símbolos. Y aún haciéndolo, lo único que habríamos conseguido es hacerlo visible, ya que lo que obtendríamos sería un código igual de complicado que el de Brainfuck y el resto de sus derivados.
No es de extrañar que un lenguaje así saliese a la luz un 1 de abril, festividad anglosajona equivalente a nuestros Santos Inocentes. Sin embargo, tiene una ventaja frente al resto de seleccionados en esta lista: puede ser introducido dentro de algún lenguaje habitual, donde el exceso de espacios no afecta, y de esta forma transmitir información oculta, dando la impresión de que compartimos un código inofensivo, cuando el código real será el resultante al quitar todos los caracteres con representación gráfica.
En GenbetaDev | Piet, un lenguaje de programación muy artístico, Trollscript, un lenguaje esotérico para trolls