Shakespeare - це езотерична мова програмування, розроблена Джоном Ослундом та Карлом Хассельстремом. [1] Подібно мові програмування Chef[ru], вона розроблена так, щоб програми виглядали як щось інше, ніж програми - у цьому випадку шекспірівські п’єси.
Список персонажів на початку програми декларує ряд стеків з такими іменами, як "Ромео" та "Джульєтта". Ці персонажі вступають у діалог між собою, таким чином здійснюють операцію введення - виведення . Герої також можуть задавати один одному запитання, які поводяться як умовні висловлювання . В цілому модель програмування дуже схожа на мову асемблера, але значно детальніша.
Програмування на Shakespeare
Заголовок
Перший рядок (від початку документа до першого порожнього рядка) називається «заголовок» і розцінюється компілятором як коментар.
Персонажі п'єси
Це розділ, в якому оголошуються змінні. Кожна змінна може приймати цілочисельне значення і має такий вигляд:
Назва, Опис
Де Name
- це ім'я змінної, а Description
- ігнорується компілятором. Компілятор розпізнає виключно ті імена, які відповідають іменам справжніх персонажів Шекспіра.[1]
Дії та сцени
Частина коду на Shakespeare розбита на Acts,
які в свою чергу містять Scenes,
в яких взаємодіють персонажі (змінні). Кожен Act
та Scene
пронумеровані римськими цифрами. Будь-який код після двокрапки сприймається як коментар. Вони записуються у такій формі:[2]
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
Вхід, вихід та запуск
Окремі рядки коду зазвичай мають форму фрагменту діалогу. Таким чином значення змінної (персонаж, з яким розмовляють) присвоюється, змінюється або виводиться. Для виклику персонажа на сцену використовується Enter
. Команда Exit
повідомляє, що точно один із зазначених персонажей залишає сцену. Exeunt
використовується у випадку, коли зі сцени треба прибрати декількох персонажей або уразі закінчення акту. Використовується такий формат:
[Enter Juliet]
[Enter Romeo and Juliet]
[Exit Romeo]
[Exeunt Romeo and Juliet]
[Exeunt]
Рядки
Рядок починається з імені персонажа (змінної) та двокрапки і складаються принаймні з одного речення.[3]
Константи
Будь-який іменник є константою зі значенням 1 або -1, що залежить від характеру свого значення. Наприклад, "квітка" має значення 1, тому що квіти гарні, але "свиня" має значення -1, оскільки свині брудні. Нейтральні іменники, такі як "дерево", також зараховуються як 1. Якщо іменник вживається у поєднанні з прикметником його значення збільшується в двічі. Присвійні займенники ігноруються синтаксичним аналізатором, тоді як слова, що стосуються основної арифметики, розпізнаються як операції, такі як "сума", "частка" та "куб". Приклади таких рядків наступні:[4]
Hamlet:
You lying stupid fatherless big smelly half-witted coward!
Juliet:
You are as villainous as the square root of Romeo!
Введення та виведення
Рядки можуть вимагати, щоб змінна виводила дані або отримувала вхідні. "Open your heart" виводить числове значення змінної, а "Speak your mind" - відповідний символ ASCII. "Listen to your heart" або "Open your mind" змушують змінну отримувати вхідні дані від користувача; перший для номера, а другий для символу.
Приклад коду
Do Not Adieu, a play in two acts.
Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
[Enter Hamlet and Romeo]
Hamlet:
You lying stupid fatherless big smelly half-witted coward!
You are as stupid as the difference between a handsome rich brave
hero and thyself! Speak your mind!
You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!
You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.
Speak your mind!
[Exit Romeo]
Scene II: The praising of Juliet.
[Enter Juliet]
Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!
[Exit Juliet]
Scene III: The praising of Ophelia.
[Enter Ophelia]
Hamlet:
Thou art as beautiful as the difference between Romeo and the square
of a huge green peaceful tree. Speak thy mind!
Thou art as lovely as the product of a large rural town and my amazing
bottomless embroidered purse. Speak thy mind!
Thou art as loving as the product of the bluest clearest sweetest sky
and the sum of a squirrel and a white horse. Thou art as beautiful as
the difference between Juliet and thyself. Speak thy mind!
[Exeunt Ophelia and Hamlet]
Act II: Behind Hamlet's back.
Scene I: Romeo and Juliet's conversation.
[Enter Romeo and Juliet]
Romeo:
Speak your mind. You are as worried as the sum of yourself and the
difference between my small smooth hamster and my nose. Speak your
mind!
Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the
difference between the square of the difference between my little pony
and your big hairy hound and the cube of your sorry little
codpiece. Speak your mind!
[Exit Romeo]
Scene II: Juliet and Ophelia's conversation.
[Enter Ophelia]
Juliet:
Thou art as good as the quotient between Romeo and the sum of a small
furry animal and a leech. Speak your mind!
Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the
difference between a mistletoe and an oozing infected blister! Speak
your mind!
[Exeunt]
Див. також
Примітки
Посилання