Происхождение языка программирования ада кратко

Эзотерический язык программирования (иногда сокращенный до esolang) — это язык программирования, предназначенный для проверки границ дизайна языка компьютерного программирования. Как доказательство концепции . Как искусство программногообеспечения. Как хакерский интерфейс к другому языку (особенно функциональному программированию или процедурным языкам программирования) или как шутка. Использование эзотерики отличает эти языки от языков программирования. Которые рабочие разработчики используют для написания программного обеспечения. Обычно создатели esolang не предполагают. Что язык будет использоваться для основного программирования. Хотя некоторые эзотерические функции, такие как

визуальный синтаксис[1] вдохновил практические приложения в искусстве. Такие языки часто популярны среди хакеров и любителей.

Юзабилити редко является целью для дизайнеров эзотерических языков программирования—часто дизайн приводит к прямо противоположному. Их обычная цель состоит в том . Чтобы удалить или заменить обычные языковые функции. Сохраняя при этом язык. Который является полным Тьюринга, или даже тот. Для которого вычислительный класс неизвестен.

Самым ранним и до сих пор каноническим примером эзотерического языка был

INTERCAL[2], разработанный в 1972 году Доном Вудсом и Джеймсом М. Лайоном с заявленным намерением быть непохожим на любой другой язык программирования. С которым были знакомы авторы.[3][4] Он пародировал элементы устоявшихся языков программирования того времени. Таких как Fortran, COBOLи assembly language.

В течение многих лет INTERCAL был представлен только бумажными копиями руководства INTERCAL. Возрождение языка в 1990 году в качестве реализации на языке Си под Unix стимулировало волну интереса к интенциональному проектированию эзотерических компьютерных языков.

В 1993 году Ваутер ван Оортмерссен создал FALSE. Небольшой стек-ориентированный язык программированияс синтаксисом . Предназначенным для того. Чтобы сделать код изначально запутанным. Запутанным и нечитаемым. Он также имеет компилятор всего 1024 байта.Это вдохновило Урбана Мюллера на создание еще меньшего языка. Ныне печально известного brainfuck, который состоит всего из восьми узнаваемых символов. Наряду с Befunge Криса Пресси (например, FALSE. Но с двумерным указателем команд) brainfuck теперь является одним из наиболее поддерживаемых эзотерических языков программирования. Это канонические примеры минимальных тарпитов Тьюринга и напрасно запутанные языковые особенности. Brainfuck относится к семейству машин Тьюринга P.

Примеры

Befunge

Befunge позволяет указателю инструкции перемещаться по коду в нескольких измерениях. Например, следующая программа отображает >,:,v,_,,, и ^.

 >:v ^,_@ 

Бинарное лямбда-исчисление

Двоичное лямбда-исчисление разработано с точки зрения алгоритмической теории информации, чтобы обеспечить максимально плотный возможный код с минимальными средствами, включая 29-байтовый самоинтерпретатор, 21-байтовое сито простых чисел и 112-байтовый интерпретатор Brainfuck.

Brainfuck

Brainfuck предназначен для экстремального минимализма и приводит к запутанному коду. С программами. Содержащими только восемь различных символов. Следующая программа выводит

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

FRACTRAN

Программа FRACTRAN представляет собой упорядоченный список положительных дробей вместе с начальным положительным целым числом

n{\displaystyle n}

. Программа запускается путем умножения целого

n{\displaystyle n}

числа на первую дробь

f{\displaystyle f}

в списке. Для которой

nf{\displaystyle nf}

это целое число. Затем целое

n{\displaystyle n}

число заменяется на

nf{\displaystyle nf}

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

n{\displaystyle n}

него. То программа останавливается. ФРАКТРАН был изобретен математиком Джоном Конвеем.

GolfScript

Программы в GolfScript состоят из списков элементов. Каждый из которых помещается в стек по мере его появления. За исключением переменных. Имеющих в качестве значения блоки кода. И в этом случае код выполняется.

ИНТЕРКАЛ

INTERCAL, сокращенно от [4]

JSFuck

JSFuck-это эзотерический стиль программирования JavaScript. Где код пишется с использованием только шести символов:[,],(, ),!, и +. В отличие от Brainfuck. Который требует своего собственного компилятора или интерпретатора. JSFuck является допустимым кодом JavaScript. То есть программы JSFuck могут быть запущены в любом веб-браузере или движке. Который интерпретирует JavaScript.]

LOLCODE

LOLCODE разработан. Чтобы напоминать речь lolcats. Ниже приведен пример

HAI CAN ИМЕЕТ STDIO? ВИДИМЫЙ KTHXBYE 

ЛОЛКОД часто критикуют за то. Что он не очень эзотеричен. А скорее является обычным процедурным языком с необычной лексикой.]

Мальболг

Мальболге (8-й круг ада) был разработан как самый сложный и эзотерический язык программирования. Среди других особенностей. Код является самоизменяющимся по дизайну. И эффект инструкции зависит от ее адреса в памяти.

Пит

Программа Piet. Которая печатает

Программа

Piet-это язык . Разработанный Дэвидом Морган-Маром, чьи программы представляют собой растровые изображения. Которые выглядят как абстрактное искусство. Компиляция управляется Процедуры выполняются. Когда указатель выходит из области.

Есть 20 цветов. Для которых задано поведение: 18 При выходе из Черный цвет не может быть введен; когда указатель пытается войти в черную область. Вместо этого изменяются правила выбора следующего блока. Если все возможные правила опробованы. Программа завершается. Области вне границ изображения также считаются черными. Белый не выполняет операций, но позволяет указателю Поведение цветов, отличных от указанных 20, остается на усмотрение компилятора или интерпретатора.

Переменные хранятся в памяти в виде целых чисел со знаком в одном стеке. Большинство указанных процедур имеют дело с операциями в этом стеке. Другие-с вводом/выводом и правилами. По которым перемещается указатель компиляции.

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

Шекспир

Шекспир предназначен для того. Чтобы сделать программы похожими на шекспировские пьесы. Например, следующий оператор объявляет точку в программе. Которая может быть достигнута с помощью оператора типа GOTO:

Действие I: Оскорбления и лесть Гамлета. 

Unlambda

Unlambda-это минималистский функциональный язык программирования . Основанный на лыжном исчислении, но в сочетании с первоклассными продолжениями и императивным вводом-выводом (при вводе обычно требуется использование продолжений).

Пробелы

Пробел использует только символы пробела (пробел. Табуляция и возврат). Игнорируя все остальные символы. Которые поэтому могут использоваться для комментариев. Это обратная сторона многих традиционных языков. Которые не различают различные символы пробела. Рассматривая табуляцию и пробел одинаково. Он также позволяет скрывать пробельные программы в исходном коде программ на таких языках, как C.

Культурный контекст

Культурный контекст эзолангов был изучен Джеффом Коксом. Который пишет. Что эзоланги [11], рассматривая эзоланги как сходные с кодовым искусством и кодовой поэзией. Такими как мезангель Мез Бриза. Дэниел Темкин описывает Brainfuck как [12] разоблачение внутреннего конфликта между человеческим мышлением и компьютерной логикой. Он связывает программирование в эзоланге с выполнением оценки событий. Таких как события движения Fluxus. Где разыгрывание правил логики в коде делает точку зрения языка ясной.]

  1. ^
  2. ^ Мэтью Фуллер, Исследования программногообеспечения . MIT Press, 2008
  3. ^ Эрик С. Рэймонд (1996). Новый хакерский словарь. MIT Press. p. 258. ISBN 978-0-262-68092-9.
  4. ^ b Woods, Donald R.; Lyon, James M. (1973), The INTERCAL Programming Language Reference Manual, Muppetlabs.com. Архивировано с оригинала 20 февраля 2009года . Извлечено 24 апреля 2009 года
  5. ^ . эзотерические коды . 1 июля 2015года . Извлечено 1 декабря 2015года .
  6. ^ Бейли, Джейн (29 февраля 2016 года). . The Daily WTF. Получено 2 марта 2020года .
  7. ^ . alligator.io… Получено 2 марта 2020года .
  8. ^ . Esolangs.org. Извлечено 30 ноября 2015года . ЛОЛКОД часто критикуют за то. Что он недостаточно эзотеричен. По замыслу, LOLCODE на самом деле является нормальным процедурным языком. Стоящим за его синтаксисом lulzy. Это разительный контраст с По этой причине LOLCODE технически классифицируется как Weirdlang.
  9. ^ Морган-Мар. Дэвид (25 января 2008 года). . Извлечено 18 мая 2013года .
  10. ^ Cox 2013, p. 6
  11. ^ Cox 2013, p. 5
  12. ^ Темкин, Даниил (15 января 2014). . NOOART: The Journal of Objectless Art (1).
  13. ^ Темкин, Даниил. . Журнал . Извлечено 6 мая 2014года .

Дальнейшее чтение

Внешние ссылки