Как стать автором
Обновить
82.45
Криптонит
Разрабатываем. Исследуем. Просвещаем

Малболг — язык из ада или как придумать что-то очень сложное и бесполезное.

Существует интернет-сообщество «эзотерические языки программирования». К нему в 1997 году присоединился американский студент Бен Олмстед. Он задался целью создать «адски сложный» для понимания язык и вскоре придумал Malbolge, названный так в честь восьмого круга ада из «Божественной комедии» Данте Алигьери. Про него рассказываем дальше.

В чём же сложности Malbolge? Их много. Чтобы сразу не было скучно, Бен отошёл от двоичной логики, заменив её на троичную. Подобным образом ранее поступили создатели советской ЭВМ «Сетунь», но совершенно из других побуждений.

Перед запуском в интерпретаторе программа на Malbolge выполняет инструкцию crazy (crz). Эта команда считывает из памяти два числа, сравнивает их в троичной системе и записывает результат в память. Операция повторяется до тех пор, пока выделенная интерпретатором память не закончится.

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

Другая уникальность Malbolge заключается в том, что программы на нём изменяют свой собственный код во время работы. Самоизменяющиеся инструкции были специально придуманы Беном для того, чтобы результат исполнения кода был неочевиден.

При этом в языке нет строго синтаксиса, определяющего порядок исполнения команд. После того, как команда исполнится, она шифруется (точнее, перекодируется) по таблице замены и при следующем вызове интерпретируется уже иначе.

Malbolge получился настолько крышесносным, что сам автор не осилил написать на нём даже «Hello World!». Вместо этого Бен сделал упрощённую версию языка Dis и программу на нём, которая печатала одну букву: «H».

Чтобы реализовать простейший Hello World на Malbolge, группе энтузиастов потребовалось два года, LISP и генетические алгоритмы, перебирающие варианты расшифровки команд. Вот как выглядел итоговый листинг:

(=<# 9]~6ZY327Uv4-QsqpMn&amp;+Ij"'E%e{Ab~w=_:]Kw%o44Uqp0/Q?xNvL:H%c# DD2^WV>gY;dts76qKJImZkj

Упоминание языка Malbolge есть в сериале «Элементарно» на CBS. В одном из его эпизодов преступник роняет записку с кодом на Malbolge, а Холмс расшифровывает его и получает подсказку.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Публикации

Информация

Сайт
kryptonite.ru
Дата регистрации
Дата основания
Численность
501–1 000 человек
Местоположение
Россия