- PVSM.RU - https://www.pvsm.ru -
[1]Эзотерические языки программирования — это нечто среднее между шуткой в индустрии программного обеспечения, искусством и исследованием пределов знаний человечества. Как правило, вне узких кругов гиков известны не образцы, являющиеся математическими доказательствами, а Brainfuck [2] и что-нибудь популярное, к примеру, ArdnoldC [3]. Новые примеры эзотерических языков появляются достаточно часто.
Дэниел Темкин создал эзотерический язык программирования Folders [4]. Это первый язык, созданный специально для его блога esoteric.codes [5]. Как следует из названия, программирование в этом языке не требует файлов, нужно лишь дерево папок файловой системы, структура которого и определяет код. Пример Hello World на языке Folders представлен слева.
В своей работе Темкин вдохновлялся Whitespace [6], эзотерическим языком, в котором программирование осуществляется обычно не играющими большой роли символами: пробелом, символом табуляции и переводом строки. Темкин задался вопросом, что ещё более пусто, чем файл, открыв который, пользователь ничего увидит, и пришёл к выводу, что это могут быть пустые папки. Как правило, папки организуют файлы, а структура из папок, которая содержит лишь другие папки и никаких файлов, обычно абсолютно бесполезна и лишь отнимает место на диске.
Другая особенность каталогов файловой системы — это то, что иерархичиские вложения одной папки в другую похожи на структурное абстрактное дерево. При этом верхний каталог носит название имени программы.
99 бутылок пива
Код читается в алфавитном порядке. Числа перед командами игнорируются, их можно использовать как номера строчек. При этом первая папка в циклах while
и if
определяет условие, а все последующие — команды. Также полностью игнорируются файлы внутри папок и слова - Copy
, - Copy (2)
и так далее в конце названий. Для соблюдения принципов языка данные и переменные сохраняются в папке Application Data текущего пользователя тоже в виде структуры папок, которая не удаляется после запуска, оставаясь в виде иллюстрации произошедшего. Некоторые ключевые слова можно (но необязательно) заменять на внешне распространённые названия папок.
Команда | Альтернативное название |
---|---|
if | New Folder |
while | Temp |
declare | Images |
let | Downloads |
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:
Больше информации можно найти в официальном репозитории проекта [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/
Нажмите здесь для печати.