«Вынос мозга»: самые странные и необычные языки программирования

strange_lang_cover2-1
Языки программирования, придуманные ради шутки или эксперимента

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

Странные

Цель странных (weird) языков — создать альтернативный код, как можно более отличающийся от своих практичных и распространенных братьев. В качестве пародии на классические языки в 1972 году американские студенты Дон Вудс и Джеймс Лайон создали первый эзотерический язык INTERCAL (Compiler Language With No Pronounceable Acronym — «язык программирования с непроизносимой аббревиатурой»).

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

Пример кода для Hello,World на языке INTERCAL:

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
PLEASE DO ,1 SUB #7 <- #48
DO ,1 SUB #8 <- #26
DO ,1 SUB #9 <- #244
PLEASE DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

INTERCAL запустил традицию создания странных и экспериментальных языков, которую подхватили другие программисты. Например, в 1998 году превзойти INTERCAL по невыносимости решил Бен Олмстад. Он изобрел язык Malbolge, который назвал в честь восьмого круга ада из «Божественной комедии» Данте. Пожалуй, само название говорит о сложности языка лучше всего.

Читайте также: Какие языки программирования нужны в IT?

Минималистичные

Минималистичные языки создавали с целью получить функциональный код за счет наименьшего количества команд. Самый знаменитый язык в этой категории, Brainfuck (1993, автор Урбан Мюллер), насчитывает всего 8 команд:

< — «сдвинуть указатель на предыдущую ячейку»;

> — «сдвинуть указатель на следующую ячейку»;

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

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

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

, — «считать значение текущей ячейки»;

[ — «начало цикла, который выполняется, пока текущая ячейка не ноль»;

] — «конец цикла. Если значение текущей ячейки не ноль, перейти назад по тексту программы на символ [».

В теории Brainfuck можно использовать для программирования любых алгоритмов, но для реальных задач он непригоден. Чтобы пользоваться им для простейших операций, необходимо провести большую подготовительную работу, внести в память массивы значений, десятки раз повторить приращение ячеек. В общем, Brainfuck («вынос мозга») справедливо считается языком для техномазохистов.

Пример программы Hello, World на языке Brainfuck:

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

Среди других минималистичных языков — OISC, который содержит только одну команду, и Lazy K, в котором используются только символы S, K и I, а единственным оператором выступает символ `.

Курс

Java-разработчик

Освойте программирование, backend-разработку на Java, Spring и основы DevOps. 

Смотреть программу

Концептуальные

Некоторые языки программирования разрабатывают, чтобы показать новые концепции дизайна кода. Они все еще могут быть намеренно непрактичными, зато удивляют. Классический пример — Befunge, разработанный Крисом Пресси в 1993 году. Целью разработки было создать язык, максимально сложный для компиляции (перевода с языка программирования на язык машинного кода).

От других языков Befunge отличается тем, что программы располагаются в двухмерной сетке, которая сшита по краям. В оригинальном Befunge 93-го года доступны 80 инструкций по горизонтали и 25 инструкций по вертикали. Интерпретатор может двигаться по сетке вверх, вниз, вправо и влево, выполняя команды в ячейках.

Программа Hello, World! на языке Befunge:

>v v ,,,,, "Hello" < >48 *, v v ,,,,, "World!" < >25 *, @

Если вы хотите освоить понятный и востребованный язык — посмотрите вебинар «Как стать разработчиком на Python и устроиться на работу мечты»

Тематические

Выйти за пределы компьютерной тематики программисты пытались уже не раз. Существуют, например, языки программирования, которые пишут код в виде кулинарных рецептов или пьес Шекспира.

Язык Shakespeare создали в 2001 году студенты Калле Хассельстрём и Юн Ослунд в качестве учебного проекта по синтаксическому анализу. Переменные в языке Shakespeare задаются именами персонажей Шекспира (Ромео, Джульетта, Гамлет), части исходного кода обозначают актами и сценами. Прежде чем начать управление переменными, их нужно ввести в текст при помощи команды Enter, а чтобы вывести переменную — выполнить команду Exit. Так как все операции выполняются строками из Шекспира, программы на этом языке очень многословны.

Как выглядит программа Hello, World! на языке Shakespeare:

Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Prince Hamlet, the flatterer of Andersen Insulting A/S.

КККККККККККККККККККAct I: Hamlet's insults and flattery.

КККККККККККККККККККScene I: The insulting of Romeo.

[Enter Hamlet and Romeo]

Hamlet:
You lying stupid fatherless big smelly half-witted coward! You are as
stupid as the difference between a handsome rich brave hero and thyself!
Speak your mind!

You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!

You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.

Speak your mind!

[Exit Romeo]

КККККККККККККККККККScene II: The praising of Juliet.

[Enter Juliet]

Hamlet:
Thou art as sweet as the sum of the sum of Romeo and his horse and his
black cat! Speak thy mind!

[Exit Juliet]

КККККККККККККККККККScene III: The praising of Ophelia.

[Enter Ophelia]

Hamlet:
Thou art as lovely as the product of a large rural town and my amazing
bottomless embroidered purse. Speak thy mind!

Thou art as loving as the product of the bluest clearest sweetest sky
and the sum of a squirrel and a white horse. Thou art as beautiful as
the difference between Juliet and thyself. Speak thy mind!

[Exeunt Ophelia and Hamlet]

КККККККККККККККККККAct II: Behind Hamlet's back.

КККККККККККККККККККScene I: Romeo and Juliet's conversation.

[Enter Romeo and Juliet]

Romeo:
Speak your mind. You are as worried as the sum of yourself and the
difference between my small smooth hamster and my nose. Speak your
mind!

Juliet:
Speak YOUR mind! You are as bad as Hamlet! You are as small as the
difference between the square of the difference between my little pony
and your big hairy hound and the cube of your sorry little
codpiece. Speak your mind!

[Exit Romeo]

КККККККККККККККККККScene II: Juliet and Ophelia's conversation.

[Enter Ophelia]

Juliet:
Thou art as good as the quotient between Romeo and the sum of a small
furry animal and a leech. Speak your mind!

Ophelia:
Thou art as disgusting as the quotient between Romeo and twice the
difference between a mistletoe and an oozing infected blister! Speak
your mind!

[Exeunt]

Смешные

Многие эзотерические языки, даже те, что притворяются осмысленными и сделанными с какой-то целью, на самом деле не более чем шутка или пранк. Например, один из диалектов Brainfuck, язык программирования Ook!, предлагает писать код исключительно словом Ook с разными интонациями (вопросительной, восклицательной, утвердительной).

Так выглядит Hello, World! на диалекте Ook:

Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook?К
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.К
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook?К
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.К
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook.К
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.К
Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook.К
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook.К
Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.К
Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.К
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook! Ook! Ook? Ook!К
Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook?К
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook?К
Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook.К
Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.К
Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook.К
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!К
Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!К
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.К

Просто красивые

Язык программирования может выглядеть не только как пьеса, но и как абстрактная картина. Создать программу в визуальном формате предлагает язык Piet (назван в честь художника Пита Мондриана).

Программа на Piet выглядит как двухмерная картинка, которая состоит из цветных блоков пикселей. Всего в программе участвуют 20 цветных блоков, которые могут варьироваться по оттенку и яркости.

Цветовая схема Piet

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

Так выглядит Hello,World на языке Piet:

Курс

Fullstack-разработчик

Вы сможете браться за фриланс заказы и откликаться на вакансии уровня junior уже во время учебы. Карьерный центр поможет в трудоустройстве.

  • 15 месяцев;
  • 3 тренажера по HTML, CSS, JavaScript, задачи и упражнения;
  • 10 проектов на Python и JavaScript в портфолио.

Смотреть программу

 

Освойте новую профессию

(рейтинг: 5, голосов: 4)
Добавить комментарий