Shakespeare - це езотерична мова програмування, розроблена Джоном Ослундом та Карлом Хассельстремом. Подібно мові програмування [ru], вона розроблена так, щоб програми виглядали як щось інше, ніж програми - у цьому випадку шекспірівські п’єси.
Список персонажів на початку програми декларує ряд стеків з такими іменами, як "Ромео" та "Джульєтта". Ці персонажі вступають у діалог між собою, таким чином здійснюють операцію (введення - виведення) . Герої також можуть задавати один одному запитання, які поводяться як умовні висловлювання . В цілому модель програмування дуже схожа на мову асемблера, але значно детальніша.
Програмування на Shakespeare
Заголовок
Перший рядок (від початку документа до першого порожнього рядка) називається «заголовок» і розцінюється компілятором як коментар.
Персонажі п'єси
Це розділ, в якому оголошуються змінні. Кожна змінна може приймати цілочисельне значення і має такий вигляд:
Назва, Опис
Де Name
- це ім'я змінної, а Description
- ігнорується компілятором. Компілятор розпізнає виключно ті імена, які відповідають іменам справжніх персонажів Шекспіра.
Дії та сцени
Частина коду на Shakespeare розбита на Acts,
які в свою чергу містять Scenes,
в яких взаємодіють персонажі (змінні). Кожен Act
та Scene
пронумеровані римськими цифрами. Будь-який код після двокрапки сприймається як коментар. Вони записуються у такій формі:
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]
Рядки
Рядок починається з імені персонажа (змінної) та двокрапки і складаються принаймні з одного речення.
Константи
Будь-який іменник є константою зі значенням 1 або -1, що залежить від характеру свого значення. Наприклад, "квітка" має значення 1, тому що квіти гарні, але "свиня" має значення -1, оскільки свині брудні. Нейтральні іменники, такі як "дерево", також зараховуються як 1. Якщо іменник вживається у поєднанні з прикметником його значення збільшується в двічі. Присвійні займенники ігноруються синтаксичним аналізатором, тоді як слова, що стосуються основної арифметики, розпізнаються як операції, такі як "сума", "частка" та "куб". Приклади таких рядків наступні:
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]
Див. також
Примітки
- The Shakespeare Programming Language. Архів оригіналу за 31 жовтня 2021. Процитовано 2 жовтня 2021. [Архівовано 2021-10-31 у Wayback Machine.]
- Know Your Language: Coding Toil and Trouble with Shakespeare. www.vice.com (англ.). Архів оригіналу за 6 листопада 2021. Процитовано 6 листопада 2021.
- Lingua::Shakespeare - Perl in a Shakespeare play - metacpan.org. metacpan.org. Архів оригіналу за 6 листопада 2021. Процитовано 6 листопада 2021.
- London, Living. Shakespeare Programming Language - Carleton College. www.carleton.edu (амер.). Архів оригіналу за 6 листопада 2021. Процитовано 6 листопада 2021.
Посилання
- Домашня сторінка [Архівовано 6 листопада 2021 у Wayback Machine.]
- Сторінка SourceForge [Архівовано 6 листопада 2021 у Wayback Machine.]
- Мова програмування Шекспіра на Slashdot
- Компілятор від Шекспіра до C, написаний на Python [Архівовано 2 жовтня 2021 у Wayback Machine.] на GitHub
- shakespearelang.org
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nemaye perevirenih versij ciyeyi storinki jmovirno yiyi she ne pereviryali na vidpovidnist pravilam proektu Shakespeare ce ezoterichna mova programuvannya rozroblena Dzhonom Oslundom ta Karlom Hasselstremom 1 Podibno movi programuvannya Chef ru vona rozroblena tak shob programi viglyadali yak shos inshe nizh programi u comu vipadku shekspirivski p yesi Spisok personazhiv na pochatku programi deklaruye ryad stekiv z takimi imenami yak Romeo ta Dzhulyetta Ci personazhi vstupayut u dialog mizh soboyu takim chinom zdijsnyuyut operaciyu vvedennya vivedennya Geroyi takozh mozhut zadavati odin odnomu zapitannya yaki povodyatsya yak umovni vislovlyuvannya V cilomu model programuvannya duzhe shozha na movu asemblera ale znachno detalnisha Zmist 1 Programuvannya na Shakespeare 1 1 Zagolovok 1 2 Personazhi p yesi 1 3 Diyi ta sceni 1 4 Vhid vihid ta zapusk 1 5 Ryadki 1 5 1 Konstanti 1 5 2 Vvedennya ta vivedennya 2 Priklad kodu 3 Div takozh 4 Primitki 5 PosilannyaProgramuvannya na Shakespearered Zagolovokred Pershij ryadok vid pochatku dokumenta do pershogo porozhnogo ryadka nazivayetsya zagolovok i rozcinyuyetsya kompilyatorom yak komentar Personazhi p yesired Ce rozdil v yakomu ogoloshuyutsya zminni Kozhna zminna mozhe prijmati cilochiselne znachennya i maye takij viglyad Nazva Opis De Name ce im ya zminnoyi a Description ignoruyetsya kompilyatorom Kompilyator rozpiznaye viklyuchno ti imena yaki vidpovidayut imenam spravzhnih personazhiv Shekspira 1 Diyi ta scenired Chastina kodu na Shakespeare rozbita na Acts yaki v svoyu chergu mistyat Scenes v yakih vzayemodiyut personazhi zminni Kozhen Act ta Scene pronumerovani rimskimi ciframi Bud yakij kod pislya dvokrapki sprijmayetsya yak komentar Voni zapisuyutsya u takij formi 2 Act I Hamlet s insults and flattery Scene I The insulting of Romeo Vhid vihid ta zapuskred Okremi ryadki kodu zazvichaj mayut formu fragmentu dialogu Takim chinom znachennya zminnoyi personazh z yakim rozmovlyayut prisvoyuyetsya zminyuyetsya abo vivoditsya Dlya vikliku personazha na scenu vikoristovuyetsya Enter Komanda Exit povidomlyaye sho tochno odin iz zaznachenih personazhej zalishaye scenu Exeunt vikoristovuyetsya u vipadku koli zi sceni treba pribrati dekilkoh personazhej abo urazi zakinchennya aktu Vikoristovuyetsya takij format Enter Juliet Enter Romeo and Juliet Exit Romeo Exeunt Romeo and Juliet Exeunt Ryadkired Ryadok pochinayetsya z imeni personazha zminnoyi ta dvokrapki i skladayutsya prinajmni z odnogo rechennya 3 Konstantired Bud yakij imennik ye konstantoyu zi znachennyam 1 abo 1 sho zalezhit vid harakteru svogo znachennya Napriklad kvitka maye znachennya 1 tomu sho kviti garni ale svinya maye znachennya 1 oskilki svini brudni Nejtralni imenniki taki yak derevo takozh zarahovuyutsya yak 1 Yaksho imennik vzhivayetsya u poyednanni z prikmetnikom jogo znachennya zbilshuyetsya v dvichi Prisvijni zajmenniki ignoruyutsya sintaksichnim analizatorom todi yak slova sho stosuyutsya osnovnoyi arifmetiki rozpiznayutsya yak operaciyi taki yak suma chastka ta kub Prikladi takih ryadkiv nastupni 4 Hamlet You lying stupid fatherless big smelly half witted coward Juliet You are as villainous as the square root of Romeo Vvedennya ta vivedennyared Ryadki mozhut vimagati shob zminna vivodila dani abo otrimuvala vhidni Open your heart vivodit chislove znachennya zminnoyi a Speak your mind vidpovidnij simvol ASCII Listen to your heart abo Open your mind zmushuyut zminnu otrimuvati vhidni dani vid koristuvacha pershij dlya nomera a drugij dlya simvolu Priklad kodured 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 Div takozhred Ezoterichna mova programuvannya Hronologiya mov programuvannya Primitkired a b The Shakespeare Programming Language Arhiv originalu za 31 zhovtnya 2021 Procitovano 2 zhovtnya 2021 Arhivovano 2021 10 31 u Wayback Machine Know Your Language Coding Toil and Trouble with Shakespeare www vice com angl Arhiv originalu za 6 listopada 2021 Procitovano 6 listopada 2021 Lingua Shakespeare Perl in a Shakespeare play metacpan org metacpan org Arhiv originalu za 6 listopada 2021 Procitovano 6 listopada 2021 London Living Shakespeare Programming Language Carleton College www carleton edu amer Arhiv originalu za 6 listopada 2021 Procitovano 6 listopada 2021 Posilannyared Domashnya storinka Arhivovano 6 listopada 2021 u Wayback Machine Storinka SourceForge Arhivovano 6 listopada 2021 u Wayback Machine Mova programuvannya Shekspira na Slashdot Kompilyator vid Shekspira do C napisanij na Python Arhivovano 2 zhovtnya 2021 u Wayback Machine na GitHub shakespearelang org Otrimano z https uk wikipedia org wiki Shakespeare mova programuvannya