Рубик сумел собрать свой кубик за месяц, а вот Бен Олмстед не написал ни одной программы на придуманном им языке Malbolge, не удивительно, ведь первая программа - простой Hello world - была написана только через два года после создания языка, и то не человеком, а другой программой на Lisp-е.
В этой статье я хочу рассказать про этот язык программирования и про то, зачем он создавался.
Malbolge - эзотерический язык программирования, к тому же не полный по Тьюрингу. Олмстед создавал его вдохновляясь знаменитым и легендарным BrainFuck-ом, он поставил себе цель написать настолько сложный язык, чтобы писать программы на этом япе было почти невозможно. Недаром название этому языку дал Malebolge - восьмой круг ада в "Божественной комедии" Данте.
Примеры программ
Вот так выглядит простой Hello world на Malebolge:
(=<`# 9]~6ZY327Uv4-QsqpMn&+Ij"'E%e{Ab~w=_:]Kw%o44Uqp0/Q?xNvL:`H%c# DD2^WV>gY;dts76qKJImZkj
А это обычный Unix cat, программа которая выводит введённые пользователем строки:
(=BA# 9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~P<
<:(8&
66# "!~}|{zyxwvu
gJk
Особенности языка
Начнём с того, что язык представлен в троичной системе счисления, что крайне неудобно, по очевидным причинам. Malbolge, как и BrainFuck, имеет 8 команд, но сложность заключается в другом.
При выполнении программы весь код изменяется, каждый символ преображается по алгоритму, в зависимости от самого кода. Другими словами, почти невозможно предугадать, что сделает программа на этом языке. Заинтересовавшиеся могут почитать больше на Вики, но эта статья не про устройство языка.
Практическое применение
Вам может показаться смешной даже мысль о том, что Malbolge можно где-то применить. Действительно, на этом языке почти невозможно написать хоть что-то полезное. Ключевое слово здесь - "почти". 12 августа на ГитХабе был создан проект под названием malbolge-lisp. Его создатель - программист и математик под ником kspalaiologos, любитель низкоуровневого программирования и эзотерических языков. В это сложно поверить, но он создал рабочий интерпретатор для Lisp-а на Malbolge. Советую ознакомиться с этим проектом.
Стоит сказать, что в данном проекте был использован не чистый Malbolge, а его старший брат - Malbolge Unshackled, в отличие от обычного Malbolge, полный по Тьюрингу, но такой же сложный и непонятный.
Резюме
Я не ставил целью статьи просто показать сложность этого языка, я хотел показать, что нет ничего невозможного, что даже на таком адски сложном для понимания языке можно что-то написать. Да, бесполезно, но не бессмысленно. Ведь для того и существуют эзотерические языки, чтобы изобразить какую-то концепцию, а люди создают программы на этих языках, чтобы эту концепцию развить.
#программирование #языки программирования #математика #python