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

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

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

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

Brainfuck

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

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

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

+ — увеличить значение в текущей ячейке на 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," "1g12-+:| , @ >^

Malbolge

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

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

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

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

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

Piet

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

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

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

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

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

Источник

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Какой язык программирования выбрать? Какой самый оплачиваемый? А какой самый актуальный? Который из них лучше? Python? Может, Java? Предлагаю сегодня отложить такие вопросы подальше и расслабиться, погрузившись в мир странных и необычных языков программирования.

LolCode — любителям мемов понравится

Появился в 2007 году под влиянием интернет-мема lolcat. Язык использует английский интернет-сленг, а точнее фразы из самого мема, поэтому разобраться в нем не составит труда.

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Lolcode имеет свой сайт, интерпретатор и документацию, так что можете написать на нем рабочую программку, дабы удивить своих друзей. Особенно в этом вам помогут туториалы, которых очень много.

Пример вывода «Hello world»:

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

YoptaScript — язык для «настоящих пацанов»

Если вы хотите попробовать такой нестандартный язык, сначала вам понадобиться потратить небольшое количество времени на изучение крылатых выражений и диалекта «чётких пацанов», ведь именно на них опирались во время разработки.

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Этот язык программирования транслируется прямо в JavaScript, а сами его создатели старались придерживаться хоть какой-то логики. Таким образом получилось метод create превратить в «намутить», объект document — «ксива», а типы данных true и false — «трулио» и «нетрулио». Если вы хоть раз писали на JavaScript, то можете посмотреть, как будет выглядеть ваш код на YoptaScript с помощью конвертера на их сайте.

Chicken — пишем код курочками

Результат прочитанной создателем очень интересной статьи, состоящей только из одного слова. Существует всего 5 программок, которые выводят либо текст, либо цифры. И, да, везде используется только одно слово — chicken, ведь именно из-за количества курочек в одной строке зависит выполняемая команда.

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Думаете, именно столько пернатых вам нужно, чтобы вывести «Hello World»? К сожалению, вышеприведенный код выводит «Chicken Power!» Для вывода культовой фразы понадобится очень, очень много chicken… Точнее, ровно 546.

Malbolge — адское программирование

Первый код был написан не создателем языка, нет. Код, выводящий «Hello World», был сгенерирован с помощью другой программы на языке Lisp спустя целых 2 года после появления языка.

За все время нашли два варианта написания приветствия, короткий и более длинный:

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

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

WhiteSpace — язык для невидимок

Создан 1 апреля в 2003 году, из-за несправедливости игнорирования символа пробела в языках программирования.

Именно поэтому код пишется только с помощью пробела, перевода строки (Enter) и таба (Tab). Да, писать рабочие программы на этом языке можно, но лучше не тратить на него нервы, ведь пропуск одного пробела способен погубить весь код.

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Команды в этом языке состоят из последовательности пробелов, табов и перевода строки, поэтому появляется возможность аккуратно спрятать сообщение на WhiteSpace среди кода другой программы.

Brainfuck — сломает ваши мозги

Говорящее название. Хотя на самом деле это отсылка к сленговому термину, означающему что-то настолько сложное и необычное, что это выходит за рамки понимания.

Сам язык предназначен не для практического использования, а для бросания вызовов программистам и для их развлечения, конечно же.

Так выглядит «Hello World» на Brainfuck:

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Интересный факт: язык довольно известен в своих кругах. В интернете вы можете найти обучающие видео и наткнуться на людей, ищущих учебник по этому языку программирования.

Piet — радужный код 🌈

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

Всего используется 20 цветов, а переход между ними – это команды. Также можно использовать дополнительные цвета (оранжевый, коричневый), но эффект от них зависит только от реализации. Кстати, ошибки в коде игнорируются.

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

18 основных цветов циклически связаны 2 способами:

  1. Цикл оттенка: красный ➝ желтый ➝ зеленый ➝ голубой ➝ синий ➝ пурпурный ➝ красный
  2. Цикл яркости: светлый ➝ нормальный ➝ темный ➝ светлый

На самом деле, тут светлый считается чуть темнее, чем сам темный цвет.

Вот так выглядит «Hello, World!» на языке Piet:

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Советую посмотреть примеры простеньких программ на Piet. Выглядит очень интересно и необычно.

ArnoldC — Шварценеггер в программировании

Для фанатов Арнольда Шварценеггера. Финский программист создал язык программирования на основе цитат его персонажей, заменив ими привычные команды. В языке присутствуют цитаты из фильмов «Терминатор», «Хищник», «Вспомнить всё», «Коммандо», «Конан-варвар».

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Соответственно, False — I LIED, IF — BECAUSE I`M GOING TO SAY PLEASE, плюс — GET UP.

Только представьте: большой код из известных цитат Арнольда. Будет забавно, не так ли?

Ook! — понятен только для орангутангов

Язык программирования для орангутангов, связанный с любимым Brainfuck, только тут намного меньше синтаксических элементов. Точнее, их только 3: «Ook.», «Ook?» и «Ook!».

«Привет, мир!» по-орангутански:

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Так как элементов всего 3, их объединили в пары, создавая различные команды. Например, пара «Ook. Ook?» перемещает указатель вправо. Таким образом комбинации пар создают код, который из-за этой особенности обязан содержать только четное количество символов.

reMorse — код на языке Морзе

Тут кто-то знает азбуку Морзе? Есть подозрения, что за появлением этого языка программирования стоят 24 часа, проведенных без сна и за компьютером.

Первая версия имела не очень удобные инструкции: тире, тире-пробел, точка, точка-пробел.

В следующей версии, reMorse2, синтаксис изменили на «..», «.-», «-.» и «-», облегчая работу.

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Сама Азбука Морзе может превратиться в головную боль без переводчика, а как можно заметить по i didnt feel like doing this part — код reMorse может стать проблемой, потому что даже сам автор не смог закончить программу «Hello World».

Velato — программируем с помощью музыки

Задачка для программистов-музыкантов: напишите музыку, которая окажется не просто красивой мелодией, но и кодом. В 2009 году Даниэль Темкин создал язык программирования, который использует звуковые файлы в качестве исходного кода. Программа на Velato определяется высотой и порядком нот.

Вообще, большее значение имеет интервал между нотами, а не высота тона. Высоты играют роль алфавита для Velato. Таким образом, такты, паузы, длительность нот и повторы игнорируются. Еще компилятор проигнорирует добавленные вами дополнительные треки.

Если понаблюдать, то можно заметить, что у программ на Velato имеется тенденция к джазовым гармониям.

ZOMBIE — только для настоящих некромантов

Кто-то любит играть за некромантов? Язык Zombie-Oriented Machine-Being Interface Engine был создан как раз специально для особо злых некромантов. Он должен позволить некроманту оживлять зомби, тревожить призраков, звать вампиров, демонов и джиннов для решения разных задач.

Структурно Zombie полагается на Сущности, куда и входит вся нечисть, которыми вы будете командовать.

«Hello, World!» на некромантском:

Сленг гопников, исключительно пробелы и фразы Шварценеггера: 12 самых необычных языков программирования

Сущности могут быть активными или неактивными. Активными будут считаться оживленные, обеспокоенные или свободные, а неактивными — призванные и связанные. Каждая сущность по-своему обрабатывает свою задачу. «Зомби» как можно быстрее двигаются по очереди из задач, выполняя их единожды. «Вампиры» выполняют свои задачи в рандомном порядке так быстро, как только могут. «Призраки» же выполняют свои обязанности последовательно, но медленно.

Источник

Читайте также:  Язык программирования высокого уровня qbasic
Оцените статью