El lenguaje de programación de Shakespeare ( SPL ) es un lenguaje de programación esotérico diseñado por Jon Åslund y Karl Hasselström. [1] Al igual que el lenguaje de programación Chef, está diseñado para hacer que los programas parezcan ser algo más que programas; en este caso, obras de teatro de Shakespeare .
Una lista de caracteres al comienzo del programa declara una serie de pilas , naturalmente con nombres como "Romeo" y "Julieta". Estos personajes dialogan entre sí en los que manipulan los valores superior de cada uno, de empuje y pop entre sí, y lo hacen de E / S . Los personajes también pueden hacerse preguntas que se comportan como declaraciones condicionales . En general, el modelo de programación es muy similar al lenguaje ensamblador pero mucho más detallado.
Programación en Shakespeare
Título
La primera línea de un programa de Shakespeare se llama "título". El compilador considera que cualquier cosa, desde la primera línea hasta el primer punto, es un comentario.
Dramatis Personae
Esta es la sección donde se declaran las variables. Cada variable puede contener un valor entero con signo y tiene la siguiente forma:
Nombre, descripción
Donde Name
es el nombre de la variable y Description
el compilador lo ignora. El compilador reconocerá solo aquellos nombres que corresponden a personajes reales de Shakespeare. [1]
Actos y escenas
Un fragmento de código en Shakespeare se divide en Acts
el contenido Scenes
en el que interactúan los caracteres (variables). Cada Act
y Scene
está numerado con un número romano y sirve como una GOTO
etiqueta. Cualquier código después de los dos puntos se considera un comentario. Están escritos en la forma:
Acto I: Los insultos y los halagos de Hamlet.Escena I: El insulto de Romeo.
Entrar, salir y salir
Las líneas individuales de código generalmente toman la forma de un diálogo hablado por un personaje a otro; así es como se asigna, cambia o imprime el valor de una variable (el carácter al que se le habla). Un personaje solo puede ser llamado "tú" o "tú". Por lo tanto, debe haber exactamente dos personajes "en el escenario" siempre que se digan líneas: uno para hablar y el otro para hablar. [1] Para llamar una variable al escenario, el Enter
comando se usa con una lista de uno o más caracteres. El Exit
comando le dice exactamente a un personaje de la lista que abandone el escenario. Exeunt
llama a más de un personaje para que se vaya, o en el caso de que no haya personajes en la lista, todos los personajes abandonarán el escenario. [1] Se utiliza el siguiente formato:
[Entra Julieta][Entran Romeo y Julieta][Salida Romeo][Salen Romeo y Julieta][Salen]
Líneas
Las líneas se representan como un diálogo hablado por un personaje y constan de al menos una oración. Cada oración puede asignar un nuevo valor a una variable, dirigir una variable para que dé salida a su valor o para que reciba una entrada. Las líneas también pueden manipular pilas o actuar como declaraciones if / then o goto. Una línea comienza con el nombre de un personaje y dos puntos. Dado que este personaje es el hablante, el otro personaje en el escenario es la variable a la que se dirige como "tú" o "tú".
Constantes y asignación de valores
Las constantes se representan mediante combinaciones de sustantivos y adjetivos; el lenguaje reconoce una lista finita de cada uno, y ambas listas se separan en aquellas que tienen un tono positivo, negativo o neutral, según lo perciben Åslund y Hasselström. Los sustantivos positivos y neutrales tienen un valor de 1 y los sustantivos negativos tienen un valor de -1. Cualquier adjetivo multiplica un sustantivo por 2 y los adjetivos se pueden combinar. [1] El analizador ignora los pronombres posesivos, mientras que las palabras que pertenecen a la aritmética básica se reconocen como operaciones, como "suma", "cociente" y "cubo". Una oración que asigna un valor a un carácter comienza con "Tú" o "Tú", opcionalmente puede continuar con "eres como [cualquier adjetivo] como", y luego da la fórmula matemática en sustantivos, adjetivos, variables y operaciones para el nuevo valor. A continuación se muestran ejemplos de tales líneas: [1]
Aldea: ¡Tú, estúpido y estúpido, huérfano de padre, gran cobarde apestoso y tonto!Julieta: ¡Eres tan villano como la raíz cuadrada de Romeo!
Las fórmulas matemáticas también pueden usar los nombres de otros personajes (incluso si esos personajes no están en el escenario) para utilizar el valor actual de ese carácter en un cálculo, o "usted mismo" o "usted mismo" para el personaje al que se le habla.
Entrada y salida
Las líneas también pueden solicitar una variable para dar salida o recibir entrada. "Abre tu corazón" genera el valor numérico de la variable, mientras que "Habla tu mente" genera el carácter ASCII correspondiente. "Escucha a tu corazón" o "Abre tu mente" hacen que la variable reciba información del usuario; el primero para un número y el segundo para un personaje. [1]
Declaraciones condicionales y gotos
Una declaración si / entonces se expresa como una pregunta formulada por un personaje. Las palabras "como [cualquier adjetivo] como" representan una prueba de igualdad, mientras que "mejor" y "peor" corresponden a mayor que y menos que, respectivamente. Una línea posterior, que comienza "si es así" o "si no", determina qué sucede en respuesta a la verdad o falsedad de la condición original. Una declaración goto comienza con "Vamos a", "Debemos" o "Debemos", continúa con "volver a" o "proceder a", y luego da un acto o una escena. Una escena se analizará como esa escena en el acto actual; una declaración goto no puede llamar a una escena en un acto diferente. [1] Una declaración condicional para llamar a goto se vería así: [1]
Julieta: Soy mejor que tuAldea: Si es así, pasemos a la escena III.
Empujar y hacer estallar pilas
Cada variable es una pila . Una variable tendrá un número entero en su pila si una línea le dice al personaje que "recuerde" un valor apropiado, como "Recuérdame" o "Recuerda a ti mismo". El valor más alto de la pila aparece (es decir, la variable asume este valor) si se le dice al personaje que "recuerde" algo; todo el texto después de esta palabra se trata como un comentario. [1]
Código de ejemplo
El estándar "¡Hola, mundo!" programa :
Do Not Adieu, una obra de teatro en dos actos.Romeo, un joven de notable paciencia.Julieta, una mujer igualmente joven de notable gracia.Ofelia, una mujer notable en disputa con Hamlet.Hamlet, el adulador de Andersen Insulting A / S. Acto I: Los insultos y los halagos de Hamlet. Escena I: El insulto de Romeo.[Entran Hamlet y Romeo]Aldea: ¡Tú, estúpido y estúpido, huérfano de padre, gran cobarde apestoso y tonto! Eres tan estúpido como la diferencia entre un guapo rico valiente héroe y tú mismo! ¡Di lo que piensas! Eres tan valiente como la suma de tu gordo pequeño peluche mal usado polvoriento vieja bacalao podrido y una hermosa feria cálida pacífica y soleada del verano día. Estás tan sano como la diferencia entre la suma de los la más dulce rosa roja y mi padre y tú! ¡Di lo que piensas! Eres tan cobarde como la suma de ti mismo y la diferencia entre un reino grande, poderoso y orgulloso y un caballo. Di lo que piensas. ¡Di lo que piensas![Salida Romeo] Escena II: El elogio de Julieta.[Entra Julieta]Aldea: Eres tan dulce como la suma de la suma de Romeo y su caballo y su ¡gato negro! ¡Di lo que piensas![Sale Juliet] Escena III: El elogio de Ofelia.[Entra Ofelia]Aldea: Eres tan hermosa como la diferencia entre Romeo y la plaza de un enorme árbol verde y pacífico. ¡Di lo que piensas! Eres tan hermosa como el producto de una gran ciudad rural y mi asombrosa monedero bordado sin fondo. ¡Di lo que piensas! Eres tan amoroso como el producto del cielo más azul, más claro, más dulce y la suma de una ardilla y un caballo blanco. Eres tan hermosa como la diferencia entre Julieta y tú. ¡Di lo que piensas![Salen Ofelia y Hamlet] Acto II: A espaldas de Hamlet. Escena I: Conversación de Romeo y Julieta.[Entran Romeo y Julieta]Romeo: Di lo que piensas. Estás tan preocupado como la suma de ti mismo y el diferencia entre mi pequeño hámster liso y mi nariz. Habla tu ¡mente!Julieta: ¡Di TU mente! ¡Eres tan malo como Hamlet! Eres tan pequeño como el diferencia entre el cuadrado de la diferencia entre mi pequeño pony y tu gran sabueso peludo y el cubo de tu pequeño arrepentido cochinillo. ¡Di lo que piensas![Salida Romeo] Escena II: Conversación de Julieta y Ofelia.[Entra Ofelia]Julieta: Eres tan bueno como el cociente entre Romeo y la suma de una pequeña animal peludo y sanguijuela. ¡Di lo que piensas!Ofelia: Eres tan repugnante como el cociente entre Romeo y el doble de diferencia entre un muérdago y una ampolla infectada que supura! Hablar ¡tu mente![Salen]
Ver también
Referencias
Referencias en línea
Referencias generales
- Herrick, Chloe (27 de junio de 2011). "La AZ de los lenguajes de programación: Shakespeare" . Computerworld . Consultado el 10 de noviembre de 2018 .
- Byrne, Michael (26 de septiembre de 2015). "Conozca su idioma: codificación de trabajo y problemas con Shakespeare" . Placa base . Consultado el 10 de noviembre de 2018 .
- Lang, Mirco; Augsten, Stephan (12 de julio de 2017). "Programación esotérica, Teil 2: Lenguaje de programación de Shakespeare" . dev-insider.de (en alemán) . Consultado el 10 de noviembre de 2018 .
- Nelson, Andy (2 de marzo de 2014). "Lenguaje de programación de Shakespeare" . Teatro y literatura inglesa en Londres . Consultado el 10 de noviembre de 2018 .
- Kühnast, Charly (diciembre de 2010). "Aus dem Alltag eines Sysadmin: Lenguaje de programación de Shakespeare" . Linux-Magazin (en alemán) . Consultado el 10 de noviembre de 2018 .
- Vee, Annette (2017). Alfabetización en codificación: cómo la programación informática está cambiando la escritura . Cambridge, MA: MIT Press . págs. 124-125. ISBN 9780262036245.
- "StackHack - Lenguaje de programación Shakespeare - Datorföreningen Stacken" . www.stacken.kth.se (en sueco) . Consultado el 10 de noviembre de 2018 .
enlaces externos
- Página principal
- Página de SourceForge
- Lenguaje de programación Shakespeare en Slashdot
- El AZ de los lenguajes de programación: Shakespeare en Computerworld
- Compilador de Shakespeare a C escrito en Python en GitHub
- shakespearelang.org