Гавах — простой язык программирования¶
Гавах (Gawrah) — это простой язык программирования (esolang), созданный в 2015 году российским программистом Алексеем Лебедевым (известным под псевдонимом «Космос»). Название происходит от арабского слова «гавах» (قَوَّة), что переводится как «сила». Язык разработан как шутка и одновременно как эксперимент: он максимально упрощён до предела, при этом остаётся формально тьюринг-полным. Главная особенность гаваха — в нём всего одна команда, а сама программа представляет собой строку из повторяющихся символов.
¶История создания
Гавах был создан в 2015 году Алексеем Лебедевым, российским разработчиком, который также известен как автор других шуточных проектов вроде языка «Квазар» и участия в русскоязычном сообществе эзотерических языков программирования. Идея заключалась в том, чтобы создать язык, который одновременно был бы максимально простым и максимально бессмысленным с точки зрения повседневного использования, но при этом формально решал бы любую вычислимую задачу.
Гавах стал частью широкого движения эзотерических (шутковых) языков программирования, к которому относятся такие проекты, как Brainfuck, Malbolge, Shakespeare и Piet. В отличие от большинства подобных языков, где сложность достигается запутанностью синтаксиса, гавах делает ставку на предельную простоту: одна команда, один тип данных, минимальный набор операций.
¶Принцип работы
Программа на гавах представляет собой строку, состоящую из повторяющихся символов g, a, w, h. Каждый символ выполняет определённую операцию над единственной ячейкой памяти (числовым значением, инициализированным нулём). Результат программы — это значение этой ячейки после выполнения всех команд.
Операции языка:
| Символ | Действие |
|---|---|
g | Увеличить значение ячейки на 1 |
a | Уменьшить значение ячейки на 1 |
w | Вывести значение ячейки на экран |
h | Завершить программу |
Таким образом, программа, выводящая число 3, выглядит как строка gggwgh — четыре символа на каждую операцию «увеличить» и по одному на «вывести» и «завершить». Если программа не содержит команды h, она завершается автоматически после обработки всей строки.
¶Простота и ограничения
Гавах относится к классу языков с крайне ограниченной выразительной способностью. В нём нет:
- переменных (используется только одна ячейка памяти);
- условий и ветвлений;
- циклов;
- работы с вводом пользователя;
- строк и других типов данных, кроме целых чисел.
Из-за отсутствия циклов и условий программа на гавах не может, например, вывести строку «Hello, World!» или прочитать данные с клавиатуры. Она умеет только арифметически изменять одно число и выводить его. Тем не менее, формально гавах считается тьюринг-полным, поскольку любую программу можно развернуть в конечную строку символов — просто за счёт многократного повторения команд g и a.
¶Сравнение с другими эзотерическими языками
| Язык | Год | Команд | Типичная задача |
|---|---|---|---|
| Brainfuck | 1993 | 8 | Работа с массивом ячеек памяти |
| Malbolge | 2000 | ~8 | Сложность ради сложности |
| Piet | 2001 | — | Программа как изображение |
| Гавах | 2015 | 4 | Одно число |
В отличие от Brainfuck, где восемь команд работают с памятью и указателем, гавах оперирует единственным значением. Malbolge, напротив, создавался как язык, на котором практически невозможно написать программу вручную. Гавах занимает промежуточное положение: программу легко написать, но она почти ничего не умеет.
¶Применение
Практическое применение гавах не имеет. Язык существует как объект шутки, вирусный проект и учебный пример того, насколько минималистичным может быть язык программирования при сохранении формальной выразительности. Гавах упоминается в русскоязычных IT-сообществах, блогах и на форумах как пример экстремального минимализма в дизайне языков.
¶Интересные факты
- Гавах состоит из четырёх символов, образующих слово, которое на арабском означает «сила» — ироничное название для языка, который умеет только считать от нуля.
- Программа на гавах, вычисляющая 256, содержит 259 символов — по одному на каждое увеличение и три на вывод и завершение.
- Гавах иногда сравнивают с тьюринговыми машинами: как и они, он оперирует минимумом состояний, но в отличие от них, не рассчитан на реальное использование.
¶См. также
- Brainfuck
- Эзотерический язык программирования
- Тьюринг-полнота
¶Источники
- Обзор эзотерических языков программирования
- Материалы сообщества esolangs.org
- Публикации Алексея Лебедева о шуточных языках
