Язык программирования Шекспира
Язык программирования Шекспира ( SPL ) — это эзотерический язык программирования, разработанный Джоном Ослундом и Карлом Вибергом. [1] Как и язык программирования Chef , он создан для того, чтобы программы выглядели чем-то иным, чем просто программами — в данном случае это шекспировские пьесы.
Список персонажей в начале программы объявляет несколько стеков , естественно, с именами типа «Ромео» и «Джульетта». Эти персонажи вступают друг с другом в диалог, в котором они манипулируют высшими ценностями друг друга, толкают друг друга и выполняют ввод-вывод . Персонажи также могут задавать друг другу вопросы, которые действуют как условные утверждения . В целом модель программирования очень похожа на ассемблер , но гораздо более многословна.
Программирование на языке Шекспира
[ редактировать ]Заголовок
[ редактировать ]Первая строка в программе Шекспира называется «заголовком». Компилятор считает комментарием все, от первой строки до первой точки.
Драматические персонажи
[ редактировать ]В этом разделе объявляются переменные. Каждая переменная может содержать целое число со знаком и имеет следующий вид:
Name, Description
Где Name
это имя переменной и Description
игнорируется компилятором. Компилятор распознает только те имена, которые соответствуют реальным шекспировским персонажам. [1]
Действия и сцены
[ редактировать ]Часть кода Шекспира взломана Acts
которые содержат Scenes
в котором взаимодействуют персонажи (переменные). Каждый Act
и Scene
нумеруется римской цифрой и служит GOTO
этикетка. Любой код после двоеточия считается комментарием. Они записываются в виде:
Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo.
Вход, выход и выход
[ редактировать ]Отдельные строки кода обычно принимают форму фрагмента диалога, произнесенного одним персонажем другому; именно так присваивается, изменяется или выводится значение переменной (проговариваемого символа). К персонажу можно обращаться только как «Ты», «Ты» или «Ты». Таким образом, при произнесении строк обычно должно быть ровно два персонажа «на сцене»: один, чтобы говорить, и другой, с которым нужно говорить. [1] Чтобы вызвать переменную на сцену, Enter
команда используется со списком из одного или нескольких символов. Exit
Команда приказывает ровно одному персонажу из списка покинуть сцену. Exeunt
призывает более одного персонажа покинуть сцену, или, если в списке нет ни одного персонажа, все персонажи покинут сцену. [1] Используется следующий формат:
[Enter Juliet] [Enter Romeo and Juliet] [Exit Romeo] [Exeunt Romeo and Juliet] [Exeunt]
Линии
[ редактировать ]Строки представлены как диалоги, произнесенные персонажем, и состоят как минимум из одного предложения. Каждое предложение может присваивать новое значение переменной, указывать переменной на вывод ее значения или направлять ее на получение входных данных. Линии также могут манипулировать стеками или действовать как операторы if/then или goto. Строка начинается с имени персонажа и двоеточия. Поскольку этот персонаж является говорящим, другой персонаж на сцене — это переменная, к которой обращаются как «Ты», «Ты» или «Ты».
Константы и присвоение значений
[ редактировать ]Константы представлены сочетаниями существительных и прилагательных; язык распознает конечный список каждого из них, и оба списка разделяются на те, которые имеют положительный, отрицательный или нейтральный тон, как это воспринимали Ослунд и Хассельстрём. Положительные и нейтральные существительные имеют значение 1, а отрицательные существительные имеют значение -1. Любое прилагательное умножает существительное на 2, а прилагательные могут быть составными. [1] Притяжательные местоимения игнорируются анализатором, а слова, относящиеся к базовой арифметике, распознаются как операции, такие как «сумма», «частное» и «куб». Предложение, которое присваивает значение персонажу, начинается с «Ты», «Ты» или «Ты», может опционально продолжаться словами «как [любое прилагательное] как», а затем дает математическую формулу в существительных, прилагательных и переменных. и операции для нового значения. Ниже приведены примеры таких строк: [1]
Hamlet: You lying stupid fatherless big smelly half-witted coward! Juliet: You are as villainous as the square root of Romeo!
Математические формулы также могут использовать имена других персонажей (даже если этих персонажей нет на сцене) для использования текущего значения этого персонажа в вычислениях или «вас» или «сам» для персонажа, с которым разговаривают.
Ввод и вывод
[ редактировать ]Строки также могут вызывать переменную для вывода или получения ввода. «Открой свое сердце» выводит числовое значение переменной, а «Выскажи свое мнение» выводит соответствующий символ ASCII. «Слушай свое сердце» или «Открой свой разум» заставляют переменную получать вводимые пользователем данные; первый для числа, а второй для символа. [1]
Условные операторы и переходы
[ редактировать ]Оператор if/then формулируется как вопрос, заданный персонажем. Слова «как [любое прилагательное] как» представляют собой критерий равенства, тогда как «лучше» и «хуже» соответствуют значениям «больше» и «меньше» соответственно. Последующая строка, начинающаяся со слов «если так» или «если нет», определяет, что произойдет в ответ на истинность или ложность исходного условия. Оператор перехода начинается со слов «Давайте», «Мы должны» или «Мы должны», продолжает «возвратиться» или «перейти к», а затем дает действие или сцену. Сцена будет анализироваться как сцена в текущем акте; оператор goto не может вызвать сцену в другом акте. [1] Условный оператор для вызова goto будет выглядеть так: [1]
Juliet: Am I better than you? Hamlet: If so, let us proceed to scene II.
Пуш и извлечение стеков
[ редактировать ]Каждая переменная представляет собой стек . В стек переменной будет помещено целое число, если строка предписывает персонажу «запомнить» соответствующее значение, например «Запомнить меня» или «Запомнить себя». Самое верхнее значение в стеке извлекается (т. е. переменная принимает это значение), если персонажу приказано «вспомнить» что-либо; весь текст после этого слова рассматривается как комментарий. [1]
Пример кода
[ редактировать ]Стандартное «Привет, Мир!» программа :
Идея состоит в том, чтобы сгенерировать значения ASCII для каждого символа строки и распечатать их с помощью команды «Выскажите свое мнение». Например, первая строка диалога, сказанная Гамлетом, использует комбинацию арифметических операций для присвоения десятичного значения 72 (двоичное 1001000) другому главному герою Ромео, которое в ASCII соответствует букве «H».
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]
См. также
[ редактировать ]- Программирование на естественном языке
- Эзотерический язык программирования
- Информировать 7
- Хронология языков программирования
Ссылки
[ редактировать ]Встроенные ссылки
[ редактировать ]Общие ссылки
[ редактировать ]- Херрик, Хлоя (27 июня 2011 г.). «А-Я языков программирования: Шекспир» . Компьютерный мир . Архивировано из оригинала 11 ноября 2018 года . Проверено 10 ноября 2018 г.
- Бирн, Майкл (26 сентября 2015 г.). «Знай свой язык: кодирование тяжелого труда и проблем с Шекспиром» . Материнская плата . Проверено 10 ноября 2018 г.
- Ланг, Мирко; Огстен, Стефан (12 июля 2017 г.). «Эзотерическое программирование, часть 2: язык программирования Шекспира» . dev-insider.de (на немецком языке) . Проверено 10 ноября 2018 г.
- Нельсон, Энди (2 марта 2014 г.). «Язык программирования Шекспира» . Английский театр и литература в Лондоне . Проверено 10 ноября 2018 г.
- Кюнаст, Чарли (декабрь 2010 г.). «Из повседневной жизни сисадмина: язык программирования Шекспира» . Журнал Linux (на немецком языке) . Проверено 10 ноября 2018 г.
- Ви, Аннет (2017). Грамотность программирования: как компьютерное программирование меняет письмо . Кембридж, Массачусетс: MIT Press . стр. 124–125. ISBN 9780262036245 .
- «StackHack — язык программирования Шекспира — Datorföreningen Stacken» . www.stacken.kth.se (на шведском языке) . Проверено 10 ноября 2018 г.
Внешние ссылки
[ редактировать ]- Домашняя страница
- Страница SourceForge
- Язык программирования Шекспира на Slashdot
- Языки программирования от Аризоны: Шекспир в Computerworld
- Интерпретатор SPL, написанный на Python ( репозиторий GitHub )
- Компилятор Shakespeare to C, написанный на Python, на GitHub
- shakespearelang.org
- Онлайн-интерпретатор и отладчик