Что общего у произведений Шекспира и программирования? Только одно — структурность. Рассказываем историю создания эзотерического языка Shakespeare — выразительного, как Basic, понятного, как Assembler, но с репликами Шекспира вместо кода.
Эзотерические языки — это не инструмент для решения прикладных задач, а креатив и юмор. Ранее мы рассказывали про шуточный INTERCAL, нашпигованный отсылками к «Алисе в Стране чудес», минималистичный False и выносящий мозг Brainfuck. Shakespeare — язык с совершенно другим характером.
Когда горят дедлайны: история создания Shakespeare
Февральской ночью 2001 года студенты Калле Хассельстрём и Юн Ослунн делали домашку по синтаксическому анализу и беседовали о творчестве Шекспира. Несколькими неделями ранее они открыли для себя ряд замечательных языков программирования, среди которых оказался знаменитый Brainfuck. Задание было — придумать свой язык. Так и родилась безумная идея сделать The Shakespeare Programming Language.
Университетский курс был посвящён синтаксису, а не разработке компилятора. Поэтому Калле и Юн сделали только транслятор в C. Как проходила защита проекта, история умалчивает, зато миру был явлен самый поэтичный и бесполезный язык программирования :-)
Например, вот так выглядит программа “Hello, World!”.
Как устроен кодинг на Shakespeare
Если читать код Shakespeare как пьесу, то можно подумать — вот оно, идеальное воплощение мультивселенной, где Джульетта ругается с Шекспиром, а Макбет делится мыслями с Ромео. Но с точки зрения кодинга всё логично.
Например, заголовок воспринимается парсером как комментарий. Представление персонажей — это объявления переменных, которые могут содержать числовые значения. Чтобы программа начала компилироваться, нужно взять любое имя героя из пьес Шекспира.
Акты и сцены в Shakespeare работают как метки. Чтобы герои начали произносить свои реплики, они должны быть на сцене и обращаться друг к другу. Для этого используют директивы Enter, Exeunt и Exit, которые дают команды героям выходить, уходить или покидать сцену.
Синтаксис работает так. Каждое существительное означает 1 или -1 в зависимости от приятности контекста. Например, «дерево» — приятное, а «змея» — нет. Каждое добавление существительного к прилагательному умножает его на два. В итоге реплика «Ты нечестный, безумный, опасный, ужасный и бессовестный негодяй!» в коде будет выглядеть как “X = -64”.
Другая интересная особенность Shakespeare — это команды ввода и вывода. «Открой сердце» и «Что у тебя на уме», обращённое к персонажу, выводит символ или число. «Слушай сердце» и «Открой разум» — вводит символы и, соответственно, числа.
Какие ещё языки бывают
Shakespeare — это литературный эзотерический язык, на котором можно писать простые арифметические программы, но не более. По такому же принципу работает Chef, где исходный код маскируется под кулинарные рецепты, или составленный из цитат Арнольда Шварценеггера ArnoldC. В следующих статьях мы продолжим раскрывать детали самых странных эзотерических языков — подписывайтесь на канал «Люди и код», чтобы не пропустить!
***
Чтобы не пропустить другие материалы о программировании, истории IT и искусственном интеллекте, подпишитесь на канал. Ставьте лайки, чтобы видеть больше таких статей у себя в ленте. Если вы хотите, чтобы мы написали о каком-то факте или технологии, предложите свою тему в комментариях к этой или другим статьям.
#люди_и_код #технологии #it #прграммирование #история it #языки программирования