Curiosidades : Los lenguajes de programación esotéricos

Los lenguajes de programación esotéricos son lenguajes minimalistas, creados como prueba de concepto y/o reto, tanto para programar el lenguaje como para escribir para él. Veamos un repaso de algunos de ellos:

Brainfuck


Es el más conocido y el más popular, su sintaxis es bastante simple:

 
 ++++++++++
 [          Bucle para iniciar las memorias (se repite 10 veces)
    >+++++++>++++++++++>+++++++++++>+++>+<<<<<-
       70        100       110      30  10
 ]
 >++.              'H'   (72) 1
 >>+.              'o'  (111) 3
 ---.              'l'  (108) 3
 <---.             'a'   (97) 2
 >>++.             espacio (32) 4
 <+.               'm'  (109) 3
 ++++++++.         'u'  (117) 3
 -------.          'n'  (110) 3
 <+++.             'd'  (100) 2
 >+.               'o'  (111) 3
 >+.               '!'   (33) 4
 >.                '\n' (10) 5

Para explicar su sintaxis lo mejor es recurrir a otros lenguajes de programación. Así, en su página de la Wikipedia nos proveen de esta tabla de equivalencias, en las que ptr equivale a un unsigned char:

brainfuck C Perl
> ++ptr; $pointer++;
< –ptr; $pointer–;
+ ++*ptr; $tape[$pointer]++;
–*ptr; $tape[$pointer]–;
. putchar(*ptr); print chr$tape[$pointer];
, *ptr=getchar(); $tape[$pointer]=ord(<>);
[ while (*ptr) { while($tape[$pointer]){
] } }

Ook !


Está basado en el anterior, pero utiliza en su lugar la combinación de palabras Ook?, Ook! y Ook. Es una parodia del bibliotecario de Mundodisco, que es transformado en orangután y solo puede pronunciar esas tres palabras. Veamos un cacho de código.

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

Supuestamente este “programa” lo que hace es escribir el típico “hola mundo”.

Befunge


En mi opinión el más original de todos, su estructura de control de flujo se basa en flechas que le dicen al programa dónde ir. Además, facilita mucho la creación de código mutante (código que se modifica a sí mismo):

vv  <      <
    2
    ^  v<
 v13v4
    ^   ^
>  >?>  ?>5^
    v   v
 v97v6
    v  v<
    8
.  >  >   ^
^<

El código de arriba se trata de un generador de números aleatorios infinito, que generará un número entre el 1 y el 9. Bastante más legible que los anteriores.

Malbolge


Aquí tenemos a un lenguaje de programación creado para ser irritante e ilegible (no, no es C, y no, tampoco es Perl). Se trata de Malbolge, cuyo nombre proviene del 8º circulo del infierno de La Divina Comedia. Aquí tenemos un “hello world” (o eso me han contado que es):

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

Lolcat


Una simple broma. Veamos su código:

HAI
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
   UP VAR!!1
   VISIBLE VAR
   IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE

Dado que es bastante más legible que los lenguajes de programación anteriores, dejaré que adivinéis que es lo que se supone que hace. 😉

INTERCAL


Y por ultimo , pero no menos irritante tenemos a una parodia del lenguaje de programación FORTRAN . INTERCAL. Y aquí el hola mundo .
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP
Bueno , y eso es todo .

He de decir que algunos de estos lenguajes de programación son muy útiles para aprender sobre algunos conceptos informáticos. Por ejemplo, Brainfuck es perfecto para aprender sobre los punteros.


Categorías

Programación

Iván

Amante de la musica , de la informatica y de todo lo experimental . Español

11 comentarios

  1.   davidlg dijo

    Casi que prefiero el código binario

    1.    desikoder dijo

      Si, yo definitivamente prefiero programar en binario o en ensamblador directamente, puedes hacer cualquier cosa ( los lenguajes de alto nivel al fin y al cabo se terminan ejecutando en el procesador ), pero lo interesante de los lenguajes esotéricos es el desafío que representan. Por cierto, roader ( el autor de este artículo ), me estas cabreando. ¿ Cómo que C y Perl son ilegibles e irritantes ?. Menuda ofensa intolerable !!. Que ultraje !!. Pero si C es maravilloso, en perl no he programado pero he visto buenos comentarios sobre este lenguaje porque al parecer es muy adecuado para manejar ficheros, strings y estas vainas, por ejemplo para exploits está bastante bien, aunque c y python en exploits funcionan bien …

      Saludos !

      1.    roader dijo

        Hombre , lo de C y perl era una broma , y si , son lenguajes bastante legibles , muy practicos y “hermosos” en las manos adecuadas.Claro que en C he visto que algunas personas acaban creando una maraña de codigo espagueti ininteligible , y sin documentar . En cuanto a Perl , no solo ocurre lo mismo que con C , sino , que al ser tan extremadamente flexible , te puedes encontrar cosas que desafian el sentido comun . He de decir que no tengo experiencia programando en Perl , pero conozco bastante bien su sintaxis.

  2.   Joaquin dijo

    El primero es como escribir en código morse 😀

    1.    roader dijo

      Y el segudo es ser un orangután , y el cuarto , proboca infartos cerebrales.

  3.   Tirso Junior dijo

    Muy bueno el post.

  4.   juanfgs dijo

    te falto Piet
    http://www.dangermouse.net/esoteric/piet.html

    1.    roader dijo

      Y chef , unlamda , whitespace y tink . Pero es que no queria hacer el articulo demasiado grande.

  5.   diazepan dijo

    IT’S SHOWTIME
    TALK TO THE HAND “hello world”
    YOU HAVE BEEN TERMINATED

    Hola Mundo en ArnoldC

    http://www.genbetadev.com/actualidad/arnoldc-el-lenguaje-basado-en-frases-de-arnold-schwarzenegger

    1.    roader dijo

      Vaya , ese no lo conocia , supongo que la idea se la dio el “null terminator”

  6.   eliotime3000 dijo

    La verdad es que esos lenguajes de programación me han hecho reír. Buena.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.