El lenguaje de programación Shakespeare ( SPL ) es un lenguaje de programación esotérico diseñado por Jon Åslund y Karl Wiberg. [ 1 ] Al igual que el lenguaje de programación Chef , está diseñado para hacer que los programas parezcan algo distinto a los programas; en este caso, obras de Shakespeare .
Una lista de caracteres al inicio del programa declara varias pilas , con nombres como "Romeo" y "Julieta". Estos caracteres dialogan entre sí, manipulando los valores superiores de las pilas de los demás, insertando y extrayendo elementos, y realizando operaciones de entrada/salida . También pueden formularse preguntas que funcionan como sentencias condicionales . En general, el modelo de programación es muy similar al lenguaje ensamblador, pero mucho más extenso.
Programación en Shakespeare
Título
La primera línea de un programa de Shakespeare se llama "título". El compilador considera que todo lo que va 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 el siguiente formato:
Nombre, Descripción
Donde Namees el nombre de la variable y Descriptiones ignorado por el compilador. El compilador solo reconocerá aquellos nombres que correspondan a personajes reales de Shakespeare. [ 1 ]
Actos y escenas
Un fragmento de código en Shakespeare se divide en Actsque contienen Scenesen los que interactúan caracteres (variables). Cada Acty Sceneestá numerado con un número romano y sirve como GOTOetiqueta. Cualquier código después de los dos puntos se considera un comentario. Se escriben de la siguiente forma:
Acto I: Los insultos y halagos de Hamlet. Escena I: El insulto a Romeo.
Entrar, salir y salir
Las líneas de código individuales generalmente adoptan la forma de un fragmento de diálogo pronunciado por un personaje a otro; así es como se asigna, cambia o muestra el valor de una variable (el personaje al que se dirige). A un personaje solo se le puede dirigir como "Tú", "Tú" o "Tú". Por lo tanto, normalmente debe haber exactamente dos personajes "en escena" cuando se pronuncian líneas: uno para hablar y otro para escuchar. [ 1 ] Para llamar a una variable a la escena, el Entercomando se usa con una lista de uno o más personajes. El Exitcomando le indica a exactamente un personaje de la lista que abandone la escena. ExeuntLlama a más de un personaje para que abandone la escena, o en el caso de que no se liste ningún personaje, todos los personajes abandonarán la escena. [ 1 ] Se utiliza el siguiente formato:
[Entra Julieta] [Entran Romeo y Julieta] [Salida de Romeo] [Salen Romeo y Julieta] [Salen]
Pauta
Las líneas se representan como diálogos pronunciados por un personaje y constan de al menos una oración. Cada oración puede asignar un nuevo valor a una variable, indicarle que muestre su valor o que reciba una entrada. Las líneas también pueden manipular pilas o funcionar como sentencias condicionales (if/then) o instrucciones de ir a. Una línea comienza con el nombre de un personaje seguido de dos puntos. Dado que este personaje es quien habla, el otro personaje en escena es la variable a la que se dirige como "Tú", "Tú" o "A ti".
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 con tono positivo, negativo o neutro, según la percepción de Åslund y Hasselström. Los sustantivos positivos y neutros tienen un valor de 1 y los sustantivos negativos tienen un valor de -1. Cualquier adjetivo multiplica un sustantivo por 2, y los adjetivos pueden ser compuestos. [ 1 ] El analizador ignora los pronombres posesivos, mientras que las palabras relacionadas con 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ú", "Tú" o "Tú", puede continuar opcionalmente con "eres como [cualquier adjetivo]", y luego proporciona 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: ¡Mentiroso, estúpido, huérfano de padre, grande, apestoso, medio tonto, cobarde! Julieta: ¡Eres tan malvado 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 escena) para utilizar el valor actual de ese personaje en un cálculo, o "tú mismo" o "tú mismo" para el personaje al que se está hablando.
Entrada y salida
Las líneas también pueden requerir que una variable genere una salida o reciba una entrada. "Open your heart" genera el valor numérico de la variable, mientras que "Speak your mind" genera el carácter ASCII correspondiente. "Listen to your heart" u "Open your mind" hacen que la variable reciba una entrada del usuario; la primera para un número y la segunda para un carácter. [ 1 ]
Sentencias condicionales y goto
Una instrucción if/then se formula como una pregunta planteada por un personaje. Las palabras "as [cualquier adjetivo] as" representan una prueba de igualdad, mientras que "better" y "worse" corresponden a mayor que y menor que, respectivamente. Una línea subsiguiente, que comienza con "if so" o "if not", determina qué sucede en respuesta a la veracidad o falsedad de la condición original. Una instrucción goto comienza con "Let us", "We shall" o "We must", continúa con "return to" o "proceed to" y luego indica un acto o escena. Una escena se interpretará como la escena del acto actual; una instrucción goto no puede llamar a una escena de un acto diferente. [ 1 ] Una instrucción condicional para llamar a un goto se vería así: [ 1 ]
Julieta: ¿Soy mejor que tú? Aldea: Si es así, pasemos a la escena II.
Empujar y deshacer pilas
Cada variable es una pila . Una variable tendrá un número entero insertado en su pila si una línea le indica al personaje que "recuerde" un valor apropiado, como "Recuérdame" o "Recuérdate a ti mismo". El valor superior de la pila se extrae (es decir, la variable asume este valor) si se le indica al personaje que "recuerde" algo; todo el texto posterior a esta palabra se trata como un comentario. [ 1 ]
Código de ejemplo
El programa estándar " ¡Hola, mundo!"
La idea es generar los valores ASCII de cada carácter de la cadena e imprimirlos usando el comando "Expresa tu opinión". Por ejemplo, la primera línea de diálogo pronunciada por Hamlet utiliza una combinación de operaciones aritméticas para asignar el valor decimal 72 (binario 1001000) al otro protagonista, Romeo, que en ASCII corresponde a la letra 'H'.
No te despidas, una obra de teatro en dos actos. Romeo, un joven con una paciencia extraordinaria. Julieta, igualmente una joven de notable gracia. Ofelia, una mujer extraordinaria que mantenía muchas disputas con Hamlet. Hamlet, el adulador de Andersen Insulting A/S. Acto I: Los insultos y halagos de Hamlet. Escena I: El insulto a Romeo. [Entran Hamlet y Romeo] Aldea: ¡Mentiroso, estúpido, huérfano de padre, grande, apestoso, medio tonto, cobarde! Eres tan estúpido como la diferencia entre un hombre guapo, rico y valiente ¡Héroe y tú mismo! ¡Expresa tu opinión! Eres tan valiente como la suma de tu pequeño y gordo relleno mal usado polvoriento vieja bragueta podrida y un hermoso verano soleado, cálido y pacífico. día. Estás tan sano como la diferencia entre la suma de los ¡La rosa más dulce y roja, 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. Expresa tu opinión. ¡Expresa tu opinión! [Salida de Romeo] Escena II: Los elogios a 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! [Salida de Julieta] Escena III: La alabanza a Ofelia. [Entra Ofelia] Aldea: Eres tan hermosa como la diferencia entre Romeo y la plaza. de un enorme y tranquilo árbol verde. ¡Di lo que piensas! Eres tan encantadora como el producto de un gran pueblo rural y mi increíble Bolso bordado sin fondo. ¡Di lo que piensas! Eres tan amoroso como el producto del cielo más azul, más claro y 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: La conversación entre Romeo y Julieta. [Entran Romeo y Julieta] Romeo: Di lo que piensas. Estás tan preocupado como la suma de ti mismo y la diferencia entre mi pequeño hámster liso y mi nariz. Habla tu ¡mente! Julieta: ¡Di lo que piensas! ¡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 perro peludo y el cubo de tu pobre pequeño bragueta. ¡Di lo que piensas! [Salida de Romeo] Escena II: Conversación entre Julieta y Ofelia. [Entra Ofelia] Julieta: Eres tan bueno como el cociente entre Romeo y la suma de un pequeño Un animal peludo y una 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 supurante! Habla ¡Tu mente! [Salen]
Véase también
Referencias
Referencias en línea
Referencias generales
- Herrick, Chloe (27 de junio de 2011). "El AZ de los lenguajes de programación: Shakespeare" . Computerworld . Archivado del original el 11 de noviembre de 2018. Recuperado el 10 de noviembre de 2018 .
- Byrne, Michael (26 de septiembre de 2015). "Conoce tu idioma: Dificultades y problemas de programación con Shakespeare" . Motherboard . Recuperado el 10 de noviembre de 2018 .
- Lang, Mirco; Augsten, Stephan (12 de julio de 2017). "Programación esotérica, parte 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). "Shakespeare Programming Language" . English Theater and Literature in London . Recuperado 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 programación: Cómo la programación informática está cambiando la escritura . Cambridge, MA: MIT Press . pp. 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
- Intérprete SPL escrito en Python ( repositorio de GitHub )
- Compilador de Shakespeare a C escrito en Python en GitHub
- shakespearelang.org
- Intérprete y depurador en línea
- Lenguajes de programación esotéricos
- William Shakespeare