Самые странные языки программирования

Самые странные языки программирования

Как вообще можно было такое придумать?

Если вы думаете, что программировать на PHP в 2021 году или учить Ассемблер как первый язык — это странно, сейчас мы сдвинем вам парадигму. Мы собрали по-настоящему странные языки программирования, на которых кто-то пишет настоящие программы, но что ещё страннее — поддерживает их в рабочем состоянии.

Зачем? Ради искусства, конечно. 

Brainfuck

Царь странных языков — Brainfuck. Это полноценный язык программирования, на котором можно реализовать любой алгоритм. Хотя даже самый умный алгоритм в таком виде будет выглядеть максимально странно:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

В этом языке всего 8 команд и нет специальных правил оформления кода. Даже комментариев нет, то есть прокомментировать смысл своего кода вы не сможете. Но зато компилятор Brainfuck весит всего 200 байт. Для сравнения: самый маленький компилятор C++ занимает в 500 раз больше места.

Вот те самые 8 команд:

> — перейти к следующей ячейке;

< — перейти к предыдущей ячейке;

+ — увеличить значение в текущей ячейке на 1;

- — уменьшить значение в текущей ячейке на 1;

. — вывести значение текущей ячейки;

, — ввести значение в текущую ячейку;

[ — если в текущей ячейке 0, идём на следующую ячейку;

] — если в текущей ячейке не 0, идём на предыдущую ячейку.

Befunge

Этому языку уже почти 30 лет, и он был придуман как самый сложный для компиляции язык программирования. Работает он так:

  1. Есть таблица с командами для процессора.
  2. Каждая команда обозначается каким-то символом из кодовой таблицы ASCII.
  3. Эти команды можно извлекать из таблицы с помощью модификаторов p и g.
  4. Кроме таблицы в языке есть много односимвольных команд, каждая из которых делает какую-то одну простейшую операцию.
  5. При компиляции программа собирается из содержимого таблицы и родных команд.

Даже самое простое описание этого языка уже выглядит очень сложно, не говоря уже о программах. Вот реализация алгоритма Фибоначчи, которая выдаёт первые 14 чисел последовательности:

62*1+v>01p001>+v>\:02p\:02gv
0 ^ <
. :p
» .1
v 0," "<0
" >1g12-+:|
, @
>^

Malbolge

Когда Бен Олмстед в 1998 году узнал, что Befunge считается самым сложным языком, то попросил подержать его пиво, и пока кто-то держал его пиво, создал Malbolge. Название языка совпадает с названием восьмого круга ада у Данте, что должно намекать на его адовую сложность.

Особенность этого языка в том, что он работает в троичной системе счисления и имеет всего три регистра для указателей и управления данными. Ещё у этого языка нет стандарта синтаксиса, команды могут идти в произвольном порядке. А чтобы было ещё интереснее, после загрузки вся свободная память интерпретатора заполняется с помощью команды crazy: она сравнивает в троичной системе 2 числа по своим правилам и результат отправляется в память.

И напоследок: после того, как выполняется очередная команда, она шифруется с помощью таблицы перевода.

Исходные символы:

!»#$%>&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Закодированные символы:

5z]&gqtyfr$(we4{WP)H-Zn,[%\3dL+Q;>U!pJS72FhOA1CB6v^=I_0/8|jsb9m<.TVac`uY*MK’X~xDl}REokN:#?G«i@

Язык получился настолько сложным, что даже его создатель не смог написать на нём программу. Первая программа на Malbolge появилась два года спустя, когда энтузиасты с помощью Lisp перебирали варианты кода, чтобы вывести классическое «Hello, world»:

(‘&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj«Fhg${z@>

На сегодняшний день в мире есть всего 3 программы, написанные на этом языке, и ни одна из них не была создана человеком.

Piet

Напоследок — красивый язык программирования. Вот как выглядит программа «Hello, world»:

Самые странные языки программирования

Язык работает так: компилятор оценивает разницу между соседними цветами, чтобы понять, что ему делать дальше. При этом он ещё перебирает оттенки цветов по кругу — так программа всегда знает, к какому цвету нужно перейти дальше.

Кроме оттенков программа сравнивает и яркость цветов: светло-синий и тёмно-синий — это два разных цвета, каждый из которых обрабатывается по-своему.

Если захотите на нём программировать — держите видео с инструкцией:

Ещё немного программ на Piet:

Самые странные языки программирования
Выводит восклицательный знак
Самые странные языки программирования
Тоже «Hello, world», который выглядит как грибочек из Марио

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Елена Грицун

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Решение матричных уравнений
Решение матричных уравнений

Финальная глава саги.

medium
Что не так с программированием в школе
Почему школьники не любят уроки программирования

Почему обучение основам программирования в школах такое ужасное и что с этим можно сделать.

easy
Зачем нужны счётчики аналитики на сайте и что они умеют
Зачем нужны счётчики аналитики на сайте и что они умеют

Переходим на новый уровень настройки сайтов.

easy
Контрольная сумма: что это и почему это важно

Рассказываем на примере покупок в магазине.

hard
Что такое сборщик мусора в программировании
Что такое сборщик мусора в программировании

Чисто и там, где метут, и там, где не мусорят.

medium
Кто такой джуниор и стоит ли идти им работать?
Кто такой джуниор и стоит ли идти им работать?
easy
Что такое Apache и как он работает
Что такое Apache и как он работает

Простой, но очень полезный веб-сервер

medium
Что такое куки

8 вопросов, которые вы всегда хотели задать, но боялись куки.

easy
Гид: что изучать, чтобы получить ИТ-профессию

Планы на будущий год.

easy
Зачем нужна командная строка в современных компьютерах

Разбираемся на Маках и Винде.

medium
easy