- PVSM.RU - https://www.pvsm.ru -

Эзотерические языки программирования Folders и Groot

Программы можно писать структурой папок или изречениями персонажа Вина Дизеля

Эзотерические языки программирования Folders и Groot - 1 [1]Эзотерические языки программирования — это нечто среднее между шуткой в индустрии программного обеспечения, искусством и исследованием пределов знаний человечества. Как правило, вне узких кругов гиков известны не образцы, являющиеся математическими доказательствами, а Brainfuck [2] и что-нибудь популярное, к примеру, ArdnoldC [3]. Новые примеры эзотерических языков появляются достаточно часто.

Дэниел Темкин создал эзотерический язык программирования Folders [4]. Это первый язык, созданный специально для его блога esoteric.codes [5]. Как следует из названия, программирование в этом языке не требует файлов, нужно лишь дерево папок файловой системы, структура которого и определяет код. Пример Hello World на языке Folders представлен слева.

В своей работе Темкин вдохновлялся Whitespace [6], эзотерическим языком, в котором программирование осуществляется обычно не играющими большой роли символами: пробелом, символом табуляции и переводом строки. Темкин задался вопросом, что ещё более пусто, чем файл, открыв который, пользователь ничего увидит, и пришёл к выводу, что это могут быть пустые папки. Как правило, папки организуют файлы, а структура из папок, которая содержит лишь другие папки и никаких файлов, обычно абсолютно бесполезна и лишь отнимает место на диске.

Другая особенность каталогов файловой системы — это то, что иерархичиские вложения одной папки в другую похожи на структурное абстрактное дерево. При этом верхний каталог носит название имени программы.

Эзотерические языки программирования Folders и Groot - 2
99 бутылок пива

Код читается в алфавитном порядке. Числа перед командами игнорируются, их можно использовать как номера строчек. При этом первая папка в циклах while и if определяет условие, а все последующие — команды. Также полностью игнорируются файлы внутри папок и слова - Copy, - Copy (2) и так далее в конце названий. Для соблюдения принципов языка данные и переменные сохраняются в папке Application Data текущего пользователя тоже в виде структуры папок, которая не удаляется после запуска, оставаясь в виде иллюстрации произошедшего. Некоторые ключевые слова можно (но необязательно) заменять на внешне распространённые названия папок.

Команда Альтернативное название
if New Folder
while Temp
declare Images
let Downloads
print Setup
input Logs

Тип Альтернативное название
int Vacation photos
float Lang
string Img
double User

На данный момент Folders доступен только для Windows, компилятор можно найти в репозитории на GitHub [7].

Другим недавно появившимся в Сети эзотерическим языком является Groot. Чтобы понять его идею, нужно вспомнить комиксы Marvel или фильм «Стражи Галактики» (Guardians of the Galaxy), прокат которого в России состоялся летом прошлого года. Язык одного из персонажей [8] сложен, но всем остальным кажется, будто он повторяет одну и ту же фразу — «я есть Грут». Лишь со временем контактирующие с Грутом люди начинают понимать высказываемые интонации.

Groot — брейнфакоподобный [2] язык, который повторяет принципы общения персонажа. Восемь команд определяются следующим образом:

Фраза Значение
i am groot увеличить значение в текущей ячейке
I am Groot уменьшить значение в текущей ячейке
I AM GROOOT напечатать значение из текущей ячейки
I AM GROOT перейти к следующей ячейке
I am groot перейти к предыдущей ячейке
I am groot ввести извне значение
I'm Groot если значение текущей ячейки ноль, перейти вперёд по тексту программы на ячейку, следующую за соответствующей We're Groot
We're Groot если значение текущей ячейки не ноль, перейти назад по тексту программы на I'm Groot

Так выглядит [9] Hello World на языке Groot:

Скрытый текст

I AM GROOT
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I'm Groot
I am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I AM GROOT
I am Groot
We are Groot
I am groot
I AM GROOOT
I AM GROOT
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I'm Groot
I am groot
i am groot
i am groot
i am groot
i am groot
I AM GROOT
I am Groot
We are Groot
I am groot
i am groot
I AM GROOOT
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I AM GROOOT
I AM GROOOT
i am groot
i am groot
i am groot
I AM GROOOT
I AM GROOT
I AM GROOT
I AM GROOT
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I'm Groot
I am groot
i am groot
i am groot
i am groot
i am groot
I AM GROOT
I am Groot
We are Groot
I am groot
I AM GROOOT
I AM GROOT
I AM GROOT
I AM GROOT
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I'm Groot
I am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
i am groot
I AM GROOT
I am Groot
We are Groot
I am groot
I am Groot
I am Groot
I am Groot
I AM GROOOT
I am groot
I am groot
I am groot
I am groot
I AM GROOOT
i am groot
i am groot
i am groot
I AM GROOOT
I am Groot
I am Groot
I am Groot
I am Groot
I am Groot
I am Groot
I AM GROOOT
I am Groot
I am Groot
I am Groot
I am Groot
I am Groot
I am Groot
I am Groot
I am Groot
I AM GROOOT
I AM GROOT
I AM GROOT
i am groot
I AM GROOOT

Больше информации можно найти в официальном репозитории проекта [10].

Автор: FakeFactFelis

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/81367

Ссылки в тексте:

[1] Image: https://habrastorage.org/files/1b0/626/6fb/1b06266fb2f04ff582e455e59c9c9e30.png

[2] Brainfuck: https://ru.wikipedia.org/wiki/Brainfuck

[3] ArdnoldC: http://habrahabr.ru/post/214189/

[4] Folders: https://esolangs.org/wiki/Folders

[5] esoteric.codes: http://esoteric.codes

[6] Whitespace: https://ru.wikipedia.org/wiki/Whitespace

[7] репозитории на GitHub: https://github.com/rottytooth/Folders

[8] одного из персонажей: https://ru.wikipedia.org/wiki/%D0%93%D1%80%D1%83%D1%82

[9] Так выглядит: https://github.com/thiagopnts/groot/blob/master/helloworld.groot

[10] официальном репозитории проекта: https://github.com/thiagopnts/groot

[11] Источник: http://geektimes.ru/post/245166/