Compartir
Publicidad
Diez lenguajes de programación para partirse la caja pero que funcionan (más o menos)
Servicios

Diez lenguajes de programación para partirse la caja pero que funcionan (más o menos)

Publicidad
Publicidad
Necesito tus botas, tu ropa y tu motocicleta - Fatal error: Number or Type of the parameters are wrong

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

Trollscript

Y claro, si hablamos de que los lenguajes esotéricos suenan a trolleada, nada mejor que empezar este recorrido con Trollscript. 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! en Trollscript:

Trooloolooloolooloolooloolooloololloooooloolooloolooloolooloooool
ooloolooloolooloolooloolooloooooloolooloooooloooloolooloololllllooooloolo
loooooololooolooloolooloolooloololoolooolooloololooooooloololooooloololoo
loolooloolooloolooloolooloolooloolooloololooooolooolooloololooollollollol
lollolllooollollollollollollollollloooooololooooolooll

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 por Urban Muller en 1993 basado 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! en Brainfuck es 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 por el bibliotecario del MundoDisco de 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:

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook.
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? 
Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? 
Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. 
Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! 
Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! 
Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! 
Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! 
Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! 
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. 
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. 
Ook. Ook. Ook! Ook. 

Pd: Yo sólo tengo controlado otro personaje de ficción con un vocabulario tan escueto: Groot de 'Los Guardianes de la Galaxia'. Y claro, también tiene su lenguaje de programación.

Más info | Ook!

Chef

Programas escondidos en recetas de cocina, Chef es desde luego el lenguaje ideal para estos días de cocineros estrellas y audiencias masivas para programas gastronómicos. Creado por David Morgan-Mar, un programa-receta debe 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í:

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 potatoes

    
Method.

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.

El hacker-Chicote creador 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) en el 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 una sintaxis basada en técnicas criptogáficas, pues al final nos queda un ¡Hola Mundo! tal que así:

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Para habernos matado...

Más info | Malbolge

Whitespace

Un lenguaje cuyas tres únicas palabras reservadas son el espacio en blanco, el tabulado y el salto de línea suena a broma y de hecho fue 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:

Whitespace In Vim2

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 que sus programas son bitmaps que simulan arte abstracto. El vocabulario está formado por 20 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:

Piet Program Hello World

Más info | Piet

ArnoldC

La expresión anglosajona de "bigger than life" se creó para hablar de ArnoldC: un lenguaje de programación cuyas instrucciones 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:

IT'S SHOWTIME
TALK TO THE HAND "hello world"
YOU HAVE BEEN TERMINATED

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

Shakespeare

Nos vamos acercando al final y llega la hora de un lenguaje culto y elegante ya 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.
                   
                   Act I: Hamlet's insults and flattery.
                   Scene I: The insulting of Romeo.
[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]

                   Act II: Behind Hamlet's back.
                   Scene I: Romeo and Juliet's conversation.
[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

LOLCODE

Empezamos con trolls y terminamos volviendo al mundo de los memes ya que LOLCODE, diseñado en 2007 por Adam Lindsay, utiliza como palabras reservadas las frases, palabras y expresiones de los memes de gaticos y 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:

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

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

Más info | LOLCODE

Temas
Publicidad
Publicidad
Publicidad
Inicio
Inicio

Ver más artículos