25/8/21

Shakespeare Programming Language






Shakespeare Programming Language es un lenguaje de programación a medio camino entre la computación y el divertimento literario. Creado en el año 2001 Karl Wiberg y Jon Åslund y que, posteriormente, ha tenido varias versiones de otros autores.

El lenguaje pretende que el código parezca una obra de Shakespeare. Para lograrlo, introduce una manera de componer las instrucciones, nominar la variables y los puntos de ruptura que simulan los actos y escenas de una obra teatral y obliga a crear frases complicadas de sabor isabelino para simplemente codificar una letra. Ni que decir tiene que la utilidad computacional es pequeña pero leer el código es de lo más gratificante.

Todo programa SPL debe comenzar por un título y la declaración de personajes (el nombre del personaje es el nombre de la variable. La descripción no se tiene en cuenta).

Cada instrucción habitual, por así decirlo, es aquí un Acto y una Escena, cuyos números sirves de  puntos de referencia que permiten hacer "GOTOs". Dentro de esos bloques-instrucciones debe haber dos personajes que se hablan. Hay, primero que llamarlos usando la instrucción "ENTER", antes de aplicarles un texto. Cuando acaban, deben salir con la instrucción "EXIT" (si sale un único personaje-variable)  o "EXEUNT" (si salen varios o todos los personajes).

Los textos-frases que se aplican al personaje (o sea, a la variable) se computan de la siguiente manera: un sustantivo agradable o neutro vale "1".  Uno desagradable, vale "-1". Cada adjetivo delante del nombre multiplica el valor por "2". Los pronombres no se tienen en cuenta. El programa usa un diccionario interno para evaluar cada palabra.

Así, "a charming beautiful lovingly maid and the dirty sticking ignorant" se computaría como:

(2 x 2 x 2 x 1) + (2 x 2 x -1) =4

Escribir en SPL:

Romeo: What a charming beautiful lovingly maid and the dirty sticking ignorant! 

es como escribir en un lenguaje convencional, R=4

Las sentencias condicionales se hacen usando frases con "better" or "worse" y las de bifurcación usando "Let us", "We shall", or "We must", seguidas de  "return to" or "proceed to", como:

Juliet:
 Am I hapier than you?

Romeo:
 If so, let us proceed to scene I.



La sentencia "Speak your mind" muestra el resultado, convirtiendo el valor de la variable a su equivalente ASCII.

En este enlace, puede verse este programa:




que, ejecutado, devuelve "HI", ya que el cálculo de las anteriores frases devuelven los valores ASCII de la H y de I. Una complicada manera de hacerlo, pero muy shakesperiana.

Puede encontrarse en GitHub aún su código. 



0 comentarios :