domingo, 17 de agosto de 2014

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.

http://blog.desdelinux.net/curiosidades-lenguajes-programacion-esotericos/

No hay comentarios:

Publicar un comentario