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
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
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.
Casi que prefiero el código binario
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 !
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.
El primero es como escribir en código morse 😀
Y el segudo es ser un orangután , y el cuarto , proboca infartos cerebrales.
Muy bueno el post.
te falto Piet
http://www.dangermouse.net/esoteric/piet.html
Y chef , unlamda , whitespace y tink . Pero es que no queria hacer el articulo demasiado grande.
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
Vaya , ese no lo conocia , supongo que la idea se la dio el «null terminator»
La verdad es que esos lenguajes de programación me han hecho reír. Buena.