«No problemo»: Terminator hace estallar los límites de la programación informática

lenguajes de programación esotéricos. Meme explota la cabezaLeer y escribir en cualquiera de los lenguajes de programación más comunes ya resulta un ejercicio de esoterismo para buena parte de la población. Sin embargo, la inspiración de los informáticos va más allá y han creado formas más oscuras y, también disparatadas, de desarrollar líneas código sobre la pantalla.

El manejo de distintos lenguajes de programación es una forma de poliglotismo que discurre al margen de lo que comúnmente se asocia con el conocimiento de idiomas. De igual forma, la cultura informática, esencial para una sociedad irremediablemente digital, no se considera “cultura” en un imaginario colectivo que, en el mejor de los casos, la asocia con un oficio útil pero reservado para unos pocos iniciados.

la informática, una forma refinada de cultura

Se olvida que los lenguajes de programación son otra forma de comunicación, entre personas y entre personas y máquinas, que puede ser poseer virtudes similares a otras formas de cultura que consideramos como tales por una tradición cultural obsoleta que ha privilegiado el conocimiento humanista frente al técnico, considerando, además, que ambos recorrían sendas paralelas sin puntos de unión.

Una sensibilidad ejercitada en el conocimiento puede comprobar, sin embargo, que «una inspirada línea de código resulta tan emocionante como el verso de una obra de Shakespeare», tal como nos explica Diego Martínez Capel, R&D Software Developer en Ericsson. 

Precisamente, el Bardo de Avon da nombre a uno de los lenguajes de programación llamados esotéricos que llevan los límites de la escritura de código un poco más allá, dando lugar a creaciones marcadas por el sentido del humor de sus impulsores y, ¿por qué no decirlo?, por su inspiración artística. También llamados «esolenguajes» o «esolangs», resultan poco útiles en situaciones reales pues se han diseñado para crear pruebas de concepto, hackear otros lenguajes, como forma de arte, o incluso con intención humorística.

6 lenguajes de programación que te harán exploTar la cabeza

Entre estos lenguajes de programación esotéricos, a los que recientemente se dedicó una sesión de formación (vídeo en TWITCH, a partir del minuto  2:05:30) en la ACM (Association for Computer Machinery) de la ETSIINF, en la Universidad Politécnica de Madrid, nos encontramos con ejemplos especialmente sorprendentes. Para comprobar su diversidad, vamos a tratar de escribir la frase «Hola Mundo» en seis de esos lenguajes, aunque existen más de 200 formas de realizar esta acción.

Shakespeare

El lenguaje de programación de Shakespeare ( SPL ) es un lenguaje esotérico diseñado por Jon Åslund y Karl Hasselström para hacer que los programas parezcan obras de teatro de Shakespeare. Una lista de caracteres al comienzo del programa declara una serie de pilas , naturalmente con nombres como «Romeo» y «Julieta». Estos personajes dialogan y también pueden hacerse preguntas que se comportan como declaraciones condicionales. 

A continuación, vamos a ver cómo quedaría nuestra expresión «Hola Mundo». Así, a simple vista, podemos concluir que, es un lenguaje muy florido, pero largo.

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]

lenguajes de programación, recetas y tiros

Chef

Seguimos con otro de estos sorprendentes lenguajes de programación que, en este caso, esconde los comandos en recetas de cocina. Creado por David Morgan-Mar, es un programa-receta que debe estar formado por un título, unas variables con sus correspondientes valores (los ingredientes) y una lista de pasos a seguir. «Hola Mundo» sería algo como así después de pasar por los fogones:

Chef

Piet

Del mismo creador que Chef, es un lenguaje que genera imágenes de arte abstracto. El vocabulario está formado por 20 colores y el puntero varía dependiendo de la diferencia de tono e intensidad entre colores contiguos en el bitmap. Es uno de nuestros lenguajes de programación esotéricos favoritos porque se puede imprimir, enmarcar y colgar en el salón.

Piet Program Hello World

Tree

Árbol en inglés, este lenguaje está pensado para que el código forme árboles así que resulta el más adecuado para los amantes de la naturaleza. Nuestro «Hola Mundo» quedaría así y nos podemos imaginar a pajarillos posados en esas ramas.

      ^
    ^^|^^ 
   ^^\|/^^
   H^ |/^^^
     \| e
      |/
   ol~|  
     \| 
  , 32|  W
   \/ | /      
    \ |/   
 l   \|  
 \  d |   o
  \/ !|r /   
   \/ |\/
    \ |/ 
     \|

Brainfuck

Quizás es el más famoso de los lenguajes esotéricos. Lo creó Urban Müller, un estudiante suizo de física como un intento de crear el compilador más pequeño posible para un lenguaje de programación ideado para los ordenadores Amiga. Como su nombre indica, los programas Brainfuck tienden a ser difíciles de comprender. Esto se debe en parte a que cualquier tarea ligeramente compleja requiere una larga secuencia de comandos lo que hace imposible su uso práctico, si bien resulta desafiante para los informáticos.

Las siguientes líneas de código hacen aparecer la frase «Hola Mundo» en la pantalla:

[ This program prints "Hello World!" and a newline to the screen, its
  length is 106 active command characters. [It is not the shortest.]

  This loop is an "initial comment loop", a simple way of adding a comment
  to a BF program such that you don't have to worry about any command
  characters. Any ".", ",", "+", "-", "<" and ">" characters are simply
  ignored, the "[" and "]" characters just have to be balanced. This
  loop and the commands it contains are ignored because the current cell
  defaults to a value of 0; the 0 value causes this loop to be skipped.
]
++++++++               Set Cell #0 to 8
[
    >++++               Add 4 to Cell #1; this will always set Cell #1 to 4
    [                   as the cell will be cleared by the loop
        >++             Add 2 to Cell #2
        >+++            Add 3 to Cell #3
        >+++            Add 3 to Cell #4
        >+              Add 1 to Cell #5
        <<<<-           Decrement the loop counter in Cell #1
    ]                   Loop until Cell #1 is zero; number of iterations is 4
    >+                  Add 1 to Cell #2
    >+                  Add 1 to Cell #3
    >-                  Subtract 1 from Cell #4
    >>+                 Add 1 to Cell #6
    [<]                 Move back to the first zero cell you find; this will
                        be Cell #1 which was cleared by the previous loop
    <-                  Decrement the loop Counter in Cell #0
]                       Loop until Cell #0 is zero; number of iterations is 8

The result of this is:
Cell no :   0   1   2   3   4   5   6
Contents:   0   0  72 104  88  32   8
Pointer :   ^

>>.                     Cell #2 has value 72 which is 'H'
>---.                   Subtract 3 from Cell #3 to get 101 which is 'e'
+++++++..+++.           Likewise for 'llo' from Cell #3
>>.                     Cell #5 is 32 for the space
<-.                     Subtract 1 from Cell #4 for 87 to give a 'W'
<.                      Cell #3 was set to 'o' from the end of 'Hello'
+++.------.--------.    Cell #3 for 'rl' and 'd'
>>+.                    Add 1 to Cell #5 gives us an exclamation point
>++.                    And finally a newline from Cell #6

ArnoldC

Terminamos esta brevísima lista de lenguajes de programación esotéricos con ArnoldC, cuyas instrucciones son frases célebres de los personajes interpretados por Arnold Schwarzeneger. Leed y a ver si adivináis las películas.

  • 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 estos mimbres, nuestra frase «Hola mundo» quedaría así.

Arnoldc

una torre de babel de lenguajes de programación

Estos lenguajes de programación esotéricos se suman a los más de 700 lenguajes de programación recogidos en la Wikipedia, una cifra extraordinaria si tenemos en cuenta que, en el mundo, se hablan unos 7.000 idiomas de los considerados convencionales.

Como vemos, el mundo de la programación informática, que ya teníamos claro que es útil y puede resultar apasionante, también nos ofrece sonrisas y eso nunca viene mal.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.