- Самые странные языки программирования
- Brainfuck
- Befunge
- Malbolge
- Piet
- Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования
- LolCode — любителям мемов понравится
- YoptaScript — язык для «настоящих пацанов»
- Chicken — пишем код курочками
- Malbolge — адское программирование
- WhiteSpace — язык для невидимок
- Brainfuck — сломает ваши мозги
- Piet — радужный код 🌈
- ArnoldC — Шварценеггер в программировании
- Ook! — понятен только для орангутангов
- reMorse — код на языке Морзе
- Velato — программируем с помощью музыки
- ZOMBIE — только для настоящих некромантов
Самые странные языки программирования
Если вы думаете, что программировать на PHP в 2021 году или учить Ассемблер как первый язык — это странно, сейчас мы сдвинем вам парадигму. Мы собрали по-настоящему странные языки программирования, на которых кто-то пишет настоящие программы, но что ещё страннее — поддерживает их в рабочем состоянии.
Зачем? Ради искусства, конечно.
Brainfuck
Царь странных языков — Brainfuck. Это полноценный язык программирования, на котором можно реализовать любой алгоритм. Хотя даже самый умный алгоритм в таком виде будет выглядеть максимально странно:
В этом языке всего 8 команд и нет специальных правил оформления кода. Даже комментариев нет, то есть прокомментировать смысл своего кода вы не сможете. Но зато компилятор Brainfuck весит всего 200 байт. Для сравнения: самый маленький компилятор C++ занимает в 500 раз больше места.
> — перейти к следующей ячейке;
+ — увеличить значение в текущей ячейке на 1;
— — уменьшить значение в текущей ячейке на 1;
. — вывести значение текущей ячейки;
, — ввести значение в текущую ячейку;
[ — если в текущей ячейке 0, идём на следующую ячейку;] — если в текущей ячейке не 0, идём на предыдущую ячейку.
Befunge
Этому языку уже почти 30 лет, и он был придуман как самый сложный для компиляции язык программирования. Работает он так:
- Есть таблица с командами для процессора.
- Каждая команда обозначается каким-то символом из кодовой таблицы ASCII.
- Эти команды можно извлекать из таблицы с помощью модификаторов p и g.
- Кроме таблицы в языке есть много односимвольных команд, каждая из которых делает какую-то одну простейшую операцию.
- При компиляции программа собирается из содержимого таблицы и родных команд.
Даже самое простое описание этого языка уже выглядит очень сложно, не говоря уже о программах. Вот реализация алгоритма Фибоначчи, которая выдаёт первые 14 чисел последовательности:
62*1+v>01p001>+v>\:02p\:02gv 0 ^ < . :p » .1 v 0," "1g12-+:| , @ >^
Malbolge
Когда Бен Олмстед в 1998 году узнал, что Befunge считается самым сложным языком, то попросил подержать его пиво, и пока кто-то держал его пиво, создал Malbolge. Название языка совпадает с названием восьмого круга ада у Данте, что должно намекать на его адовую сложность.
Особенность этого языка в том, что он работает в троичной системе счисления и имеет всего три регистра для указателей и управления данными. Ещё у этого языка нет стандарта синтаксиса, команды могут идти в произвольном порядке. А чтобы было ещё интереснее, после загрузки вся свободная память интерпретатора заполняется с помощью команды crazy: она сравнивает в троичной системе 2 числа по своим правилам и результат отправляется в память.
И напоследок: после того, как выполняется очередная команда, она шифруется с помощью таблицы перевода.
Язык получился настолько сложным, что даже его создатель не смог написать на нём программу. Первая программа на Malbolge появилась два года спустя, когда энтузиасты с помощью Lisp перебирали варианты кода, чтобы вывести классическое «Hello, world»:
На сегодняшний день в мире есть всего 3 программы, написанные на этом языке, и ни одна из них не была создана человеком.
Piet
Напоследок — красивый язык программирования. Вот как выглядит программа «Hello, world»:
Язык работает так: компилятор оценивает разницу между соседними цветами, чтобы понять, что ему делать дальше. При этом он ещё перебирает оттенки цветов по кругу — так программа всегда знает, к какому цвету нужно перейти дальше.
Кроме оттенков программа сравнивает и яркость цветов: светло-синий и тёмно-синий — это два разных цвета, каждый из которых обрабатывается по-своему.
Если захотите на нём программировать — держите видео с инструкцией:
Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования
Какой язык программирования выбрать? Какой самый оплачиваемый? А какой самый актуальный? Который из них лучше? Python? Может, Java? Предлагаю сегодня отложить такие вопросы подальше и расслабиться, погрузившись в мир странных и необычных языков программирования.
LolCode — любителям мемов понравится
Появился в 2007 году под влиянием интернет-мема lolcat. Язык использует английский интернет-сленг, а точнее фразы из самого мема, поэтому разобраться в нем не составит труда.
Lolcode имеет свой сайт, интерпретатор и документацию, так что можете написать на нем рабочую программку, дабы удивить своих друзей. Особенно в этом вам помогут туториалы, которых очень много.
Пример вывода «Hello world»:
YoptaScript — язык для «настоящих пацанов»
Если вы хотите попробовать такой нестандартный язык, сначала вам понадобиться потратить небольшое количество времени на изучение крылатых выражений и диалекта «чётких пацанов», ведь именно на них опирались во время разработки.
Этот язык программирования транслируется прямо в JavaScript, а сами его создатели старались придерживаться хоть какой-то логики. Таким образом получилось метод create превратить в «намутить», объект document — «ксива», а типы данных true и false — «трулио» и «нетрулио». Если вы хоть раз писали на JavaScript, то можете посмотреть, как будет выглядеть ваш код на YoptaScript с помощью конвертера на их сайте.
Chicken — пишем код курочками
Результат прочитанной создателем очень интересной статьи, состоящей только из одного слова. Существует всего 5 программок, которые выводят либо текст, либо цифры. И, да, везде используется только одно слово — chicken, ведь именно из-за количества курочек в одной строке зависит выполняемая команда.
Думаете, именно столько пернатых вам нужно, чтобы вывести «Hello World»? К сожалению, вышеприведенный код выводит «Chicken Power!» Для вывода культовой фразы понадобится очень, очень много chicken… Точнее, ровно 546.
Malbolge — адское программирование
Первый код был написан не создателем языка, нет. Код, выводящий «Hello World», был сгенерирован с помощью другой программы на языке Lisp спустя целых 2 года после появления языка.
За все время нашли два варианта написания приветствия, короткий и более длинный:
Язык использует специально разработанную для него нелогичную операцию, самоизменяющийся код и шифрование, делая нахождения нужной последовательности символов слишком сложным. И если раньше найти рабочую строчку кода считалось достижением, то теперь вы при желании можете просто перейти по первой ссылке в поисковике и подождать некоторое время, пока генерируется код с нужной вам фразой.
WhiteSpace — язык для невидимок
Создан 1 апреля в 2003 году, из-за несправедливости игнорирования символа пробела в языках программирования.
Именно поэтому код пишется только с помощью пробела, перевода строки (Enter) и таба (Tab). Да, писать рабочие программы на этом языке можно, но лучше не тратить на него нервы, ведь пропуск одного пробела способен погубить весь код.
Команды в этом языке состоят из последовательности пробелов, табов и перевода строки, поэтому появляется возможность аккуратно спрятать сообщение на WhiteSpace среди кода другой программы.
Brainfuck — сломает ваши мозги
Говорящее название. Хотя на самом деле это отсылка к сленговому термину, означающему что-то настолько сложное и необычное, что это выходит за рамки понимания.
Сам язык предназначен не для практического использования, а для бросания вызовов программистам и для их развлечения, конечно же.
Так выглядит «Hello World» на Brainfuck:
Интересный факт: язык довольно известен в своих кругах. В интернете вы можете найти обучающие видео и наткнуться на людей, ищущих учебник по этому языку программирования.
Piet — радужный код 🌈
Графический язык программирования, названный в честь художника Пита Мондриана и использующий двухмерные изображения, составленные из пикселей.
Всего используется 20 цветов, а переход между ними – это команды. Также можно использовать дополнительные цвета (оранжевый, коричневый), но эффект от них зависит только от реализации. Кстати, ошибки в коде игнорируются.
18 основных цветов циклически связаны 2 способами:
- Цикл оттенка: красный ➝ желтый ➝ зеленый ➝ голубой ➝ синий ➝ пурпурный ➝ красный
- Цикл яркости: светлый ➝ нормальный ➝ темный ➝ светлый
На самом деле, тут светлый считается чуть темнее, чем сам темный цвет.
Вот так выглядит «Hello, World!» на языке Piet:
Советую посмотреть примеры простеньких программ на Piet. Выглядит очень интересно и необычно.
ArnoldC — Шварценеггер в программировании
Для фанатов Арнольда Шварценеггера. Финский программист создал язык программирования на основе цитат его персонажей, заменив ими привычные команды. В языке присутствуют цитаты из фильмов «Терминатор», «Хищник», «Вспомнить всё», «Коммандо», «Конан-варвар».
Соответственно, False — I LIED, IF — BECAUSE I`M GOING TO SAY PLEASE, плюс — GET UP.
Только представьте: большой код из известных цитат Арнольда. Будет забавно, не так ли?
Ook! — понятен только для орангутангов
Язык программирования для орангутангов, связанный с любимым Brainfuck, только тут намного меньше синтаксических элементов. Точнее, их только 3: «Ook.», «Ook?» и «Ook!».
«Привет, мир!» по-орангутански:
Так как элементов всего 3, их объединили в пары, создавая различные команды. Например, пара «Ook. Ook?» перемещает указатель вправо. Таким образом комбинации пар создают код, который из-за этой особенности обязан содержать только четное количество символов.
reMorse — код на языке Морзе
Тут кто-то знает азбуку Морзе? Есть подозрения, что за появлением этого языка программирования стоят 24 часа, проведенных без сна и за компьютером.
Первая версия имела не очень удобные инструкции: тире, тире-пробел, точка, точка-пробел.
В следующей версии, reMorse2, синтаксис изменили на «..», «.-», «-.» и «-», облегчая работу.
Сама Азбука Морзе может превратиться в головную боль без переводчика, а как можно заметить по i didn‘t feel like doing this part — код reMorse может стать проблемой, потому что даже сам автор не смог закончить программу «Hello World».
Velato — программируем с помощью музыки
Задачка для программистов-музыкантов: напишите музыку, которая окажется не просто красивой мелодией, но и кодом. В 2009 году Даниэль Темкин создал язык программирования, который использует звуковые файлы в качестве исходного кода. Программа на Velato определяется высотой и порядком нот.
Вообще, большее значение имеет интервал между нотами, а не высота тона. Высоты играют роль алфавита для Velato. Таким образом, такты, паузы, длительность нот и повторы игнорируются. Еще компилятор проигнорирует добавленные вами дополнительные треки.
Если понаблюдать, то можно заметить, что у программ на Velato имеется тенденция к джазовым гармониям.
ZOMBIE — только для настоящих некромантов
Кто-то любит играть за некромантов? Язык Zombie-Oriented Machine-Being Interface Engine был создан как раз специально для особо злых некромантов. Он должен позволить некроманту оживлять зомби, тревожить призраков, звать вампиров, демонов и джиннов для решения разных задач.
Структурно Zombie полагается на Сущности, куда и входит вся нечисть, которыми вы будете командовать.
«Hello, World!» на некромантском:
Сущности могут быть активными или неактивными. Активными будут считаться оживленные, обеспокоенные или свободные, а неактивными — призванные и связанные. Каждая сущность по-своему обрабатывает свою задачу. «Зомби» как можно быстрее двигаются по очереди из задач, выполняя их единожды. «Вампиры» выполняют свои задачи в рандомном порядке так быстро, как только могут. «Призраки» же выполняют свои обязанности последовательно, но медленно.