lunes, marzo 31, 2008

Lenguaje de programación para orangutanes


El impronunciable y casi imposible de recordar nombre de este blog : Orangoodling tiene por origen la (bastante abandonada) versión de este: Orangoodle. Que a su vez tiene por nombre la fusión de la palabra Orangután y Moodle. El Orangutan por supuesto proviene del maravilloso bibliotecario de la Universidad Invisible (conocido por el nombre de Bibliotecario) quien un buen día un grimorio encantado le convirtió en Orangután... El Bibliotecario es feliz siendo un orangután y romperá todos los huesos de cualquier Mago de la Universidad Invisible que intente revertir su transformación en simio.

Esto solo tiene sentido en el Mundodisco la saga literaria de Terry Ptratchet (y quien no la considere literaria... que se joda). que en clave de humor nos permite comprender mejor el mundo en el que vivimos, o la universidad en la que trabajo.

Pues hoy mi amigo Pablo Casado me ha enviado un enlace a una entrada de Wikipedia en la que se describe el OoK! : Ook! (con el signo de exclamación) es un lenguaje de programación esotérico Turing completo diseñado para orangutanes. El lenguaje tiene 3 palabras reservadas (Ook., Ook?, y Ook!); que pueden combinarse en ocho maneras diferentes para formar el repertorio de instrucciones del lenguaje. Según su diseñador, David Morgan-Mar, Ook! pretende ser fácil de aprender para los orangutanes y evitar cualquier mención de la palabra «mono».

Este lenguaje es una parodia de Brainfuck, del que toma su conjunto completo de comandos (ver tabla). Deriva su completitud Turing de esta relación. El nombre del lenguaje y la relación con los orangutanes viene del personaje del bibliotecario que aparece en las novelas del Mundodisco de Terry Pratchett. El bibliotecario es un mago que se convirtió en orangután debido a un error en un conjuro mágico y cuyo vocabulario consta de una sola palabra: «Ook».

Sentencia Ook! Caracter Brainfuck Significado
Ook. Ook? > Incrementa el puntero.
Ook? Ook. < Decrementa el puntero.
Ook. Ook. + Incrementa el byte apuntado.
Ook! Ook! - Decrementa el byte apuntado.
Ook! Ook. . Salida (ASCII) del byte apuntado.
Ook. Ook! , Entrada (ASCII) sobre el byte apuntado.
Ook! Ook? [ Avanza a la instrucción inmediatamente posterior al Ook? Ook! correspondiente si el byte actualmente apuntado es cero.
Ook? Ook! ] Retrocede a la instrucción inmediatamente posterior al Ook! Ook? correspondiente si el byte actualmente apuntado no es cero.

Adviértase que si el puntero de ejecución se desplaza un "Ook" se obtiene un programa completamente diferente.

3 comentarios:

  1. Probad a compilar esto (en serio).

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

    ResponderEliminar
  2. Recuerdo que había una entrada en Ludosofía en la que se hablaba de esto. (en los comentarios, el artículo habla de otra cosa distinta).

    También se mencionaron otros lenguajes curiosos, como MOO, lenguaje orientado a bovinos, Malbolge, el lenguaje infernal, un lenguaje musical o lenguajes más serios, como el C Omega.

    ResponderEliminar
  3. El Brainfuck original es mucho mejor. Hay que ver cuánta magia se puede encerrar en ocho símbolos.

    Estuve toda una tarde intentando hacer un programa que sumara dos números de dos cifras, pero lo único que logré fue que sumara dos números de una cifra... si el resultado también tiene una cifra. Luego guardé el código para continuar otro día, pero Brainfuck tiene la propiedad de ser totalmente ilegible si no se comenta.

    Así que ya sabéis, niños, ¡comentad vuestro código!

    ResponderEliminar