Баннер мобильный (3) Пройти тест

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

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

Подборка

29 февраля 2024

Поделиться

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

Содержание

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

    Странные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Смешные

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

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

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

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

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

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

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

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

    Подборка

    Поделиться

    Скопировано
    0 комментариев
    Комментарии