Язык программирования Шекспир: Эзотерический подход
Shakespeare Programming Language
Язык программирования Шекспира (SPL): эзотерический язык, маскирующийся под пьесы. Объявление персонажей = стеки, диалоги = операции. Уникальный синтаксис!
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Эзотерический язык программирования
Esoteric programming language
Язык программирования Шекспир (SPL) — это эзотерический язык программирования, разработанный Джоном Ослундом и Карлом Вибергом. Подобно языку программирования Chef, он создан таким образом, чтобы программы выглядели как нечто отличное от программ — в данном случае, шекспировские пьесы. Список персонажей в начале программы объявляет несколько стеков, закономерно с именами вроде "Ромео" и "Джульетта". Эти персонажи вступают в диалог, в котором они манипулируют верхними значениями друг друга, помещают и извлекают значения из стеков друг друга, а также выполняют ввод-вывод. Персонажи также могут задавать друг другу вопросы, которые работают как условные операторы. В целом, модель программирования очень похожа на язык ассемблера, но значительно более многословна.
The Shakespeare Programming Language (SPL) is an esoteric programming language designed by Jon Åslund and Karl Wiberg. Like the Chef programming language, it is designed to make programs appear to be something other than programs — in this case, Shakespearean plays. A character list in the beginning of the program declares a number of stacks, naturally with names like "Romeo" and "Juliet". These characters enter into dialogue with each other in which they manipulate each other's topmost values, push and pop each other, and do I/O. The characters can also ask each other questions which behave as conditional statements. On the whole, the programming model is very similar to assembly language but much more verbose.
Название
Первая строка в программе Шекспира называется "заголовок". Компилятор рассматривает все от первой строки до первой точки как комментарий.
The first line in a Shakespeare program is called the 'title'. The compiler considers anything from the first line to the first period to be a comment.
Акты и сцены
Код в пьесах Шекспира разбит на акты, которые содержат сцены, в которых взаимодействуют персонажи (переменные). Каждый акт и сцена пронумерованы римскими цифрами и служат меткой перехода (GOTO). Любой код после двоеточия считается комментарием. Они записываются в следующем формате:
Акт I: Оскорбления и лесть Гамлета. Сцена I: Оскорбление Ромео.
A piece of code in Shakespeare is broken into Acts which contain Scenes in which characters (variables) interact. Each Act and Scene is numbered with a Roman numeral and serves as a GOTO label. Any code after the colon is considered a comment. They are written in the form:
Act I: Hamlet's insults and flattery. Scene I: The insulting of Romeo.
Линии
Линии представляются в виде диалога, произнесенного персонажем, и состоят как минимум из одного предложения. Каждое предложение может присвоить переменной новое значение, указать переменной вывести свое значение или получить ввод. Линии также могут манипулировать стеками или выполнять функции условного перехода (if/then) или перехода по метке (goto). Линия начинается с имени персонажа и двоеточия. Поскольку этот персонаж говорит, другой персонаж на сцене является переменной, к которой обращаются как "Ты", "Вы" или "Вам".
Lines are represented as dialogue spoken by a character, and consist of at least one sentence. Each sentence may assign a new value to a variable, direct a variable to output its value, or direct it to receive an input. Lines can also manipulate stacks or act as if/then or goto statements. A line starts with a character's name and a colon. Since this character is the speaker, the other character on stage is the variable that is addressed as "You", "Thou", or "Thee".
Вход и выход
Линии также могут обращаться к переменной для вывода данных или получения ввода. "Открой свое сердце" выводит числовое значение переменной, а "Говори, что думаешь" – соответствующий символ ASCII. "Слушай свое сердце" или "Открой свой ум" позволяют переменной получить ввод от пользователя: первое – число, а второе – символ.
Lines can also call for a variable to give output or receive input. "Open your heart" outputs the variable's numerical value, while "Speak your mind" outputs the corresponding ASCII character. "Listen to your heart" or "Open your mind" cause the variable to receive input from the user; the former for a number and the latter for a character.
Нажимание и взрыв стеков
Каждая переменная является стеком. В стек переменной помещается целое число, если строка указывает персонажу "запомнить" подходящее значение, например, "Запомни меня" или "Запомни себя". Верхнее значение стека извлекается (то есть, переменная принимает это значение), если персонажу говорят "вспомнить" что-либо; весь текст после этого слова считается комментарием.
Each variable is a stack. A variable will have an integer pushed onto its stack if a line tells the character to "remember" an appropriate value, such as "Remember me", or "Remember yourself". The topmost value in the stack is popped (i. e., the variable assumes this value) if the character is told to "recall" anything; all text after this word is treated as a comment.