Shakespeare (мова програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б The Shakespeare Programming Language. Архів оригіналу за 31 жовтня 2021. Процитовано 2 жовтня 2021.
  2. Know Your Language: Coding Toil and Trouble with Shakespeare. www.vice.com (англ.). Архів оригіналу за 6 листопада 2021. Процитовано 6 листопада 2021.
  3. Lingua::Shakespeare - Perl in a Shakespeare play - metacpan.org. metacpan.org. Архів оригіналу за 6 листопада 2021. Процитовано 6 листопада 2021.
  4. London, Living. Shakespeare Programming Language - Carleton College. www.carleton.edu (амер.). Архів оригіналу за 6 листопада 2021. Процитовано 6 листопада 2021.

Посилання[ред. | ред. код]