Самые необычные языки программирования

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

Если вы думаете, что программировать на 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»:

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

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

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

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

Источник

Пол Грэм: Странные языки программирования

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

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

Но остальные 0,5% программирования непропорционально интересны. Если вы хотите узнать, из чего он состоит, странность странных языков — хороший ключ к разгадке.

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

Конкретный пример: макросы Lisp. Макросы на Lisp кажутся странными даже многим программистам на Lisp. Они не только не пересекаются с популярными языками, но по их природе было бы трудно правильно реализовать на языке, не превратив его в диалект Lisp. И макросы определенно свидетельствуют о методах, выходящих за рамки программирования на основе склеивания. Например, решение проблем, сначала написав язык для проблем этого типа, а затем написав на нем свое конкретное приложение. И это не все, что вы можете делать с макросами; это всего лишь одна область в пространстве техник манипулирования программами, которые даже сейчас еще далеко не полностью изучены.

Так что, если вы хотите расширить свое представление о программировании, один из способов сделать это — изучить странные языки. Выберите язык, который большинство программистов считает странным, но средний пользователь которого умен, а затем сосредоточьтесь на различиях между этим языком и пересечением популярных языков. Что вы можете сказать на этом языке, что было бы невероятно неудобно говорить по-другому? В процессе обучения тому, как говорить то, что вы раньше не могли сказать, вы, вероятно, научитесь думать то, о чем раньше не могли думать.

Источник

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

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

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

Странные

Цель странных (weird) языков — создать альтернативный код, как можно более отличающийся от своих практичных и распространенных братьев. В качестве пародии на классические языки в 1972 году американские студенты Дон Вудс и Джеймс Лайон создали первый эзотерический язык INTERCAL (Compiler Language With No Pronounceable Acronym — «язык программирования с непроизносимой аббревиатурой»). Вудс и Лайон хотели создать язык, на котором было бы очень сложно или вовсе невозможно программировать, и добились своего. Даже самые простые операции в INTERCAL заставят кодера попотеть. Язык использует метод вывода строк «лента Тьюринга», в котором массив чисел обрабатывается слева направо по одному символу за раз. Некоторые команды блокируют выполнение последующих команд или изменения переменных в коде. Визитная карточка INTERCAL — это модификатор PLEASE, который не несет никакой смысловой нагрузки, но должен встречаться в коде четыре или пять раз. Если вы используете PLEASE меньше трех раз, программа выдаст ошибку «Программист недостаточно вежлив», если больше пяти — «Программист слишком вежлив». Пример кода для Hello,World на языке INTERCAL: INTERCAL запустил традицию создания странных и экспериментальных языков, которую подхватили другие программисты. Например, в 1998 году превзойти INTERCAL по невыносимости решил Бен Олмстад. Он изобрел язык Malbolge, который назвал в честь восьмого круга ада из «Божественной комедии» Данте. Пожалуй, само название говорит о сложности языка лучше всего. Читайте также: Какие языки программирования нужны в IT?

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

dffsdd (2)

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

Group 1321314345 (4)

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

Group 1321314347 (1)

Пример программы 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 цветных блоков, которые могут варьироваться по оттенку и яркости. Командами в языке являются переходы к следующему блоку. Компилятор выбирает следующий шаг, анализируя разницу между соседними цветами. Так выглядит Hello,World на языке Piet:

Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.

Источник

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