Lenguajes de programación esotéricos

Miércoles, 21 de Junio de 2006

La Wikipedia contiene una entrada en castellano para los Lenguajes de programación esotéricos.
El propósito de estos lenguajes es resultar más curiosos que útiles. Quizá como resultado de algún proyecto de universidad, un estudio sobre lenguajes, quien sabe.
Algunos contienen muy pocas instrucciones, pero las codifican con palabras claves graciosas y muy parecidas entre sí, dando lugar a un lenguaje totalmente ilegible.

Uno de ellos es Oook!, un lenguaje cuya lectura de su código fuente recuerda al idioma de los monos. Solo tiene tres palabras claves que combinadas de dos en dos, dan lugar a 8 instrucciones en total.
El lenguaje final es tan estrambótico como éste, un programa que simplemente pinta “Hola Mundo”:

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

Otro, por ejemplo, INTERCAL nace como una parodia siniestra de FORTRAN y COBOL cuyo único objetivo es ser extremadamente difícil de programar y de entender.
Contiene instrucciones redundantes y con nombres irónicos como “READ OUT”, “IGNORE”, “FORGET” o “PLEASE”, codifica los operadores binarios y unarios (and, or, not, xor) con otros símbolos extraños que no se encuentran directamente en el teclado, obligando al programador a hacer algún truco para teclearlos.
Por ejemplo, la manera más sencilla de almacenar en una variable de 32-bit el valor 65536 se convierte en esta pequeña pesadilla:

DO :1 <- #0?#256

Las entradas y salidas están muy limitadas: las entradas de los dígitos tienen que ser deletreadas y las salidas de los números se hacen en formato romano. Un horror.

Un simple “Hello World” en C como éste:

#include <stdio.h>
int main(void) {
    printf("Hello, world!n");
    return 0;
}

Se convierte en esta deliciosa pieza de código en C-INTERCAL como ésta:

        DO ,1 <- #13
        PLEASE DO ,1 SUB #1 <- #234
        DO ,1 SUB #2 <- #112
        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 <- #214
        PLEASE READ OUT ,1
        PLEASE GIVE UP

Por supuesto, tiene la instrucción COMEFROM, que a modo de chiste, es lo contrario que la antigua y obsoleta (por romper la estructura del código) instrucción GOTO: Recordemos que GOTO sirve para provocar un salto en la línea de ejecución de nuestro programa a una línea concreta en nuestro código. CAMEFROM sirve para lo contrario, indicamos que se debe seguir la ejecución a partir de la línea actual donde esta la sentencia COMEFROM cuando se ejecute la línea indicada.
Justo al reves. Por ejemplo, esto:

10 PRINT "Hello!";
20 GOTO 10

Se convierte con CAMEFROM en:

10 COMEFROM 30
20 PRINT "Hello!"
30 REM

De esta manera, sabemos cuando se efectúa el salto al leer el destino, no el origen de la línea que lo provoca. Vamos, una auténtica pesadilla de la programación que sobrepasa el absurdo y solo sirve para rendir culto a su complejidad. Más información en la Página oficial de Intercal. No apta para cardíacos, ya te avisan en la propia home: “Abandon All Sanity, Ye Who Enter Here”.

Por cierto, esto me recuerda a otra entrada de la Wikipedia también interesantísima que hace poco mi amigo kotrina me envió por correo.
Es una lista de programas que escriben “Hello World” en más de 250 lenguajes, sistemas, plataformas y programas diferentes. Desde Java o C, pasando por XSLT hasta calculadoras programables. O incluso escribir esta frase desde POV-Ray, una aplicación para renderizar gráficos realistas a partir de scripts.
Curioso e interesante, aunque no vienen ni Ook ni INTERCAL, ?será que no son dignos de considerarse lenguajes de programación? ?Qué intolerancia a las minorias! :-)

Vía (aunque ya había oido hablar de Ook hace bastante tiempo, no había visto la entrada en la Wikipedia hasta que lo ví en Meneame): Meneame)

2 comentarios to “Lenguajes de programación esotéricos”

  1. Cubano:

    Sólo un comentario al artículo, sobre Ook: como llames mono al bibliotecario, se va a cabrear, y si se cabrea le da por desatornillar cabezas o estampar a su propietario contra el suelo. Es un SIMIO :D. Ook es lo único que dice el bibliotecario de la Universidad Invisible del Mundodisco, serie de novelas de Terry Pratchett. Es un orangután (el bibliotecario, no Pratchett).
    Mu bueno el blog. La entrada de los RAID (aunque no venga mucho al caso, ahora) me aclaró el tema después de varios años sin terminar de comprenderlo.

  2. polyphony:

    Pues en meneamé hoy ha salido este también. Realmente increible.

Hacer un comentario

XHTML: Puedes utilizar las siguientes etiquetas:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Verification Image

Debes leer y teclear los caracteres entre 0..9 y A..F para enviar la respuesta.