Fernando Siles

Hay máslenguajes de programaciónque botellines. Los tenemos de bajo o de alto nivel, declarativos, procedurales, orientados a objetos… y tenemos los llamadoslenguajes esotéricos, lenguajes peculiares de sintaxis muy básicas y alfabetos reducidos que casi parecen unatrolleadade sus creadores (aunque suelen serTuring completos, ojo). En este artículo que tienes entre manos vamos a listar y reseñar doce de estos lenguajes esotéricos para tu diversión, asombro y sorpresa.

Trollscript

Y claro, si hablamos de que los lenguajes esotéricos suenan atrolleada, nada mejor que empezar este recorrido conTrollscript. Se trata de un dialecto del popular Brainfuck (del que también hablaremos), se instala como una gema de Ruby y tiene una sintaxis tan sencilla como la que sigue:

ooo - Incrementa el puntero de datos a la siguiente celda a la derecha

ool - Decrementa el puntero de datos a la siguiente celda a la izquierda

olo - Incrementa en uno el byte apuntado

oll - Decrementa en uno el byte apuntado

loo - Saca el valor ASCII de la celda apuntada

lol - Acepta un byte de entrada guardando su valor en la celda apuntada

llo - Si el byte es cero, salta hacia adelante hasta encontrar la siguiente coincidencia

lll - Si el byte es cero, salta hacia atrás hasta encontrar la siguiente coincidencia

Los scripts empiezan con Tro y terminan con ll. Dicho esto, así quedaría un¡Hola Mundo!enTrollscript:

Una curiosidad: este Trollscript tiene una licencia “Do What The Fuck You Want To Public License”. Épico.

Más info |Trollscript, un lenguaje de programación para Trolls

Brainfuck

El padre de Trollscript y muchos otros fue diseñado porUrban Muller en 1993basado en la maquina de Turing y desde entonces lleva haciendo honor a su nombre y jodiendo cerebros. Cuenta con sólo 8 instrucciones de un solo carácter cada una:

“>” - Incrementa el puntero.

“<” - Decrementa el puntero.

“+” - Incrementa el byte apuntado.

“-” - Decrementa el byte apuntado.

“.” - Escribe el byte apuntado en el flujo de salida.

“,” - Lee un byte del flujo de entrada y lo almacena en el byte apuntado.

“[” - Avanza a la instrucción inmediatamente posterior al ] correspondiente si el byte actualmente apuntado es nulo (si es 0).

“]” - Retrocede a la instrucción inmediatamente posterior al [ correspondiente si el byte actualmente apuntado no es nulo (si es distinto de 0).

Un ejemplo de¡Hola Mundo!enBrainfuckes tan bonito y edificante como esto:

Más info |Brainfuck

Ook!

Seguimos con otro lenguaje surgido a raíz de Brainfuck pero esta vez usando el vocabulario empleado porel bibliotecario del MundoDiscode Terry Pratchett. Este personaje no es precisamente Cervantes y sólo emplea tres vocablos:Ook., Ook! y Ook?Con estas palabras reservadas, el creador de Ook!, David Morgan-Mar, construye las ocho instrucciones de Brainfuck:

Ook. Ook? - Incrementa el puntero.

Ook? Ook. - Decrementa el puntero.

Ook. Ook. - Incrementa el byte apuntado.

Ook! Ook! - Decrementa el byte apuntado.

Ook! Ook. - Salida (ASCII) del byte apuntado.

Ook. Ook! - Entrada (ASCII) sobre el byte apuntado.

Ook! Ook? - Avanza a la instrucción inmediatamente posterior al Ook? Ook! correspondiente si el byte actualmente apuntado es cero.

Ook? Ook! - Retrocede a la instrucción inmediatamente posterior al Ook! Ook? correspondiente si el byte actualmente apuntado no es cero.

Con estos mimbres tenemos un ¡Hola Mundo! tal que así, belleza pura:

Pd: Yo sólo tengo controlado otro personaje de ficción con un vocabulario tan escueto:Grootde ‘Los Guardianes de la Galaxia’. Y claro, también tienesu lenguaje de programación.

Pd2: ¿qué me olvido deHodor?Para nada.

Más info |Ook!

Chicken

Venga, seguimos con lenguajes de programación con un vocabulario reducido, en esta ocasiónuna única palabra en inglés: chicken. Tampoco es que fuera muy misterioso cual es el nombre del lenguaje creado por el programador suecoTorbjörn Söderstedtinspirado por ese avícolapaper de Doug Zongker.

A pesar de contar con un vocabulario tan escueto,Chicken dispone de 11 instruccionesque dependen del número de veces que aparezca la palabra chicken separada por espacios en blanco:

Descripción de la instrucción

0

Se detiene la ejecución

1

Se imprime en pantalla la palabra “chciken”

2

Se suman los dos valores más arriba en la pila

3

Se restan los dos valores más arriba en la pila

4

Se multiplican los dos valores más arriba en la pila

5

Se comparan los dos valores más arriba en la pila

6

La siguiente instrucción indica la fuente desde la cual cargar. 0 cargas de la pila, 1 cargas del input del usuario. El valor más arriba de la pila apunta a la dirección / índice a cargar en la pila

7

El valor más arriba de la pila apunta a la dirección / índice donde almacenar. El valor a continuación se se “popeará” y se almacenará

8

El valor más arriba de la pila indica donde saltar si la condición siguiente es verdadera

9

Interpreta el valor más arriba de la pila como ASCII y “pushea” el correspondiente carácter

10+

“Pushea” el número literal n-10 en la pila

El ¡Hola Mundo! con este lenguaje sería un trozo de código larguísimo así que casi mejor que os pongo la presentación de la que surgió todo. La gente, como se puede observar, se"despolla"bien a gusto.

Más info |Chicken

Chef

Programas escondidos en recetas de cocina,Chefes desde luego el lenguaje ideal para estos días de cocineros estrellas y audiencias masivas para programas gastronómicos. Creado por David Morgan-Mar, unprograma-recetadebe estar formado por un título, unas variables con sus correspondientes valores (los ingredientes) y una lista de manipulaciones de pila (los pasos a seguir). Un ejemplo de ¡Hola Mundo! sería algo como así:

Elhacker-Chicotecreador de Chef dice que los programas no sólo deben funcionar sino que deben parecer apetecibles. Hay gente para todo.

Más info |Chef

Malbolge

Un lenguaje inspirado (y bautizado) enel octavo infierno de ‘La Divina Comedia’de Dante. Con eso debería bastar para tenerle miedo al lenguaje diseñado por Ben Olmstead en 1998. Si además añadimos que el bueno de Olmstead planeó que fuera el lenguaje de programación más difícil del mundo y para ello uso unasintaxis basada en técnicas criptográficas, pues al final nos queda un ¡Hola Mundo! tal que así:

Para habernos matado…

Más info |Malbolge

Whitespace

Un lenguaje cuyas tres únicaspalabras reservadas son el espacio en blanco, el tabulado y el salto de líneasuena a broma y de hechofue publicado un 1 de Abril, el April’s Fool, equivalente anglosajón a nuestro Día de los Santos Inocentes. Pero lo cierto es que funciona y aquí tenéis un ¡Hola Mundo! convenientemente tuneado para que esto no parezca uno de esos memes de hacer scroll:

Más info (y ejemplos) |Whitespace

Piet

Creado por el mismo señor que el anterior de la lista, David Morgan-Mar, Piet es un lenguaje cuya principal característica es quesus programas son bitmaps que simulan arte abstracto. El vocabulario está formado por20 colores(nada de cosas raras en plan blanco roto o rosa palo) y el puntero varía dependiendo de la diferencia de tono e intensidad entre colores contiguos en el bitmap.

¿Cómo sería un ¡Hola Mundo! en este lenguaje bautizado como el pintor holandés Piet Mondrian? Pues así de psicodélico:

Más info |Piet

ArnoldC

La expresión anglosajona de “bigger than life” se creó para hablar de ArnoldC: un lenguaje de programación cuyasinstrucciones son frases célebres de los personajes interpretados por Don Arnold Schwarzeneger(aka El Chuache) en la gran pantalla. Instrucciones tan épicas como:

False: I LIED

True: NO PROBLEMO

If: BECAUSE I’M GOING TO SAY PLEASE

Else: BULLSHIT

EndIf: YOU HAVE NO RESPECT FOR LOGIC

While: STICK AROUND

EndWhile: CHILL

PlusOperator: GET UP

MinusOperator: GET DOWN

MultiplicationOperator: YOU’RE FIRED

DivisionOperator: HE HAD TO SPLIT

ModuloOperator: I LET HIM GO

EqualTo: YOU ARE NOT YOU YOU ARE ME

GreaterThan: LET OFF SOME STEAM BENNET

Or: CONSIDER THAT A DIVORCE

And: KNOCK KNOCK

DeclareMethod: LISTEN TO ME VERY CAREFULLY

NonVoidMethod: GIVE THESE PEOPLE AIR

MethodArguments: I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE

Return: I’LL BE BACK

EndMethodDeclaration: HASTA LA VISTA, BABY

CallMethod: DO IT NOW

AssignVariableFromMethodCall: GET YOUR ASS TO MARS

DeclareInt: HEY CHRISTMAS TREE

SetInitialValue: YOU SET US UP

BeginMain: IT’S SHOWTIME

EndMain: YOU HAVE BEEN TERMINATED

Print: TALK TO THE HAND

ReadInteger: I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY

AssignVariable: GET TO THE CHOPPER

SetValue: HERE IS MY INVITATION

EndAssignVariable: ENOUGH TALK

ParseError: WHAT THE FUCK DID I DO WRONG

Con semejante materia prima, un ¡Hola Mundo! es elegancia austriaca pura:

Si alguien sabe enumerar la peli de cada instrucción y luego hace un programa para las torres de Hanoi, lo consideraré mi Dios y le oraré cada noche.

Más info |ArnoldC, el lenguaje basado en frases de Arnold Schwarzeneger

Beatnik

Creado en el año 2000 por Cliff Biffle, la curiosidad deBeatnikradica en queutiliza palabras en inglés, les asigna valorescomo si del Scrabble o el Apalabrados se tratara y según el valor, entre 0 y 255, realizará una acción o función:

Escribir un “¡Hola mundo!” en Beatnik es realmente largo así que nos conformaremos con un"¡Hola!":

Más info |Beatnik

Shakespeare

Nos vamos acercando al final y llega la hora deun lenguaje culto y eleganteya que está inspirado por los personajes y tramas del más célebre dramaturgo de la historia. Su funcionamiento es parecido al de Chef (mismo creador no en vano):título, lista de personajes con sus descripciones y finalmente los actos y escenas necesarios. ¿Qué no queda claro? Pues aquí un ejemplo de ¡Hola Mundo!:

Romeo, a young man with a remarkable patience. Juliet, a likewise young woman of remarkable grace. Ophelia, a remarkable woman much in dispute with Hamlet. Hamlet, the flatterer of Andersen Insulting A/S.

[Enter Hamlet and Romeo] Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer’s day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! You are as cowardly as the sum of yourself and the difference between a big mighty proud kingdom and a horse. Speak your mind. Speak your mind! [Exit Romeo] Scene II: The praising of Juliet. [Enter Juliet] Hamlet: Thou art as sweet as the sum of the sum of Romeo and his horse and his black cat! Speak thy mind! [Exit Juliet] Scene III: The praising of Ophelia. [Enter Ophelia] Hamlet: Thou art as lovely as the product of a large rural town and my amazing bottomless embroidered purse. Speak thy mind! Thou art as loving as the product of the bluest clearest sweetest sky and the sum of a squirrel and a white horse. Thou art as beautiful as the difference between Juliet and thyself. Speak thy mind! [Exeunt Ophelia and Hamlet]

[Enter Romeo and Juliet] Romeo: Speak your mind. You are as worried as the sum of yourself and the difference between my small smooth hamster and my nose. Speak your mind! Juliet: Speak YOUR mind! You are as bad as Hamlet! You are as small as the difference between the square of the difference between my little pony and your big hairy hound and the cube of your sorry little codpiece. Speak your mind! [Exit Romeo] Scene II: Juliet and Ophelia’s conversation. [Enter Ophelia] Juliet: Thou art as good as the quotient between Romeo and the sum of a small furry animal and a leech. Speak your mind! Ophelia: Thou art as disgusting as the quotient between Romeo and twice the difference between a mistletoe and an oozing infected blister! Speak your mind! [Exeunt]

Un poco largo, ¿no? Para hacer una sucesión de Fibonacci lo mismo necesitas escribirte un tomo de ‘Canción de Hielo y Fuego’…

Más info |Shakespeare

GRASS

Lenguaje creado en Japón en 2006 y cuya principal característica y aspecto diferenciador es querecrea la formación de la hierba usando tan sólo “W”, “w” y “v”. ¿Cómo se te ha quedado el cuerpo?.

Aunque parezca una chorrada como un piano,Grass es un lenguaje Turing completo basado en el cálculo lambda. Un ejemplo de código en Grass sería, por ejemplo, el siguiente:

Más info |Grass

reMorse / reMorse2

¿Fuiste a los boy scouts pero nunca le has sacado partido a ese código Morse chapucero que te enseñaron? Tranquilo porquereMorsees tu lenguaje. Tiene4 instrucciones: punto, barra, barrapunto y puntobarra. Y a tirar millas.

reMorse2es un dialecto de reMorse peroTuring completo(es decir sólo con punto y barra como instrucciones). Un ejemplo de código en este lenguaje sería:

Más info |reMorse

LOLCODE

Empezamos con trolls y terminamos volviendo al mundo de los memes ya que LOLCODE, diseñado en 2007 por Adam Lindsay, utiliza comopalabras reservadas las frases, palabras y expresiones de los memes de gaticosy demás.

Su sintaxis es del siguiente modo:

HAI - Arranca el programa.

CAN HAS [LIBRARY]? - Pregunta si una librería (la de input/output, por ejemplo) está disponible, la carga si la respuesta es correcta y lanza una excepción ni no.

VISIBLE [MESSAGE] - Imprime un mensaje por pantalla.

KTHXBYE - Cierra el programa.

Por lo tanto un ¡Hola Mundo! a bote pronto sería:

A ver si algún developer patrio con insomnio nos deleita con unOLAKASEo similares, el público arde en deseos.

Más info |LOLCODE

¿Te has quedado con ganas de más? Puesel wiki ESOLANG, querecopila decenas, incluso centenares, de lenguajes esotéricos, te puede proporcionar horas y horas de entretenimiento, asombro e incluso inspiración. De nada.