~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 87D7322D9F266805CD33826EEE96CBC9__1717757400 ✰
Заголовок документа оригинал.:
✰ Esoteric programming language - Wikipedia ✰
Заголовок документа перевод.:
✰ Эзотерический язык программирования — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Esoteric_programming_language ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/87/c9/87d7322d9f266805cd33826eee96cbc9.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/87/c9/87d7322d9f266805cd33826eee96cbc9__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:36:19 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 7 June 2024, at 13:50 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Эзотерический язык программирования — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

Эзотерический язык программирования (иногда сокращается до esolang ) — это язык программирования , предназначенный для проверки границ дизайна языка компьютерного программирования, в качестве доказательства концепции , в качестве искусства программного обеспечения , в качестве хакерского интерфейса к другому языку (особенно функциональному программированию или процедурного программирования языкам ). ), или в шутку . Использование слова «эзотерический» отличает их от языков, которые действующие разработчики используют для написания программного обеспечения. Создатели большинства эсолангов не планируют использовать их для массового программирования, хотя некоторые эзотерические функции, такие как зрительно-пространственный синтаксис , [1] вдохновили на практическое применение в искусстве. Такие языки часто популярны среди хакеров и любителей. [ нужна цитата ]

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

История [ править ]

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

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

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

Общие особенности [ править ]

Хотя эзотерические языки программирования во многом различаются, есть некоторые общие черты, которые характеризуют многие языки, такие как пародия, минимализм и цель усложнить программирование. [6] Многие эзотерические языки программирования, такие как Brainfuck и подобные, используют в качестве команд отдельные символы, однако языки нередко читают построчно, как обычные языки программирования .

данных Уникальные представления

Обычные императивные языки программирования обычно позволяют хранить данные в переменных, но эзотерические языки могут использовать другие методы хранения данных и доступа к ним. Такие языки, как Brainfuck и Malbolge, позволяют читать данные только с помощью одного указателя , который необходимо переместить в интересующее место перед чтением данных. Другие, такие как Befunge и Shakespeare , используют один или несколько стеков для хранения данных, что приводит к способу выполнения, похожему на обратную польскую нотацию . Наконец, существуют языки, которые исследуют альтернативные формы представления чисел: вариант Brainfuck Boolfuck допускает операции только с отдельными битами, тогда как Malbolge и вариант INTERCAL TriINTERCAL полностью заменяют биты на троичную систему с основанием 3. [7]

Уникальное представление инструкций [ править ]

Эзотерические языки также демонстрируют уникальные способы представления программных инструкций. Некоторые языки, такие как Befunge и Piet , представляют программы в двух или более измерениях, при этом управление программой перемещается по программе в нескольких возможных направлениях. [8] [ нужна страница ] Это отличается от обычных языков, в которых программа представляет собой набор инструкций, обычно встречающихся последовательно. Другие языки изменяют инструкции, чтобы они выглядели в необычной форме, часто такой, которая может быть прочитана людьми, с альтернативным значением основных инструкций. Шекспир достигает этого, делая все программы похожими на пьесы Шекспира. Chef достигает того же, превращая все программы в рецепты. [7] Chef особенно примечателен тем, что некоторые из них создали программы, которые успешно функционируют и как программа, и как рецепт, демонстрируя способность языка создавать это двойное значение. [9]

Трудно читать и писать [ править ]

Многие эзотерические языки программирования созданы для создания глубоко запутанного кода , что затрудняет его чтение и написание. [10] Целью этого может быть создание интересной головоломки или задачи для авторов программ: например, Malbolge был явно разработан как сложный, поэтому у него есть такие функции, как самомодифицирующийся код и крайне нелогичные операции. [10] С другой стороны, некоторые эзотерические языки становится труднее писать из-за других вариантов дизайна. Brainfuck придерживается идеи минималистского набора команд, поэтому, хотя его инструкции в принципе просты, возникающий код труден для чтения человеком. Трудности INTERCAL возникают в результате решения избегать операций, используемых в любом другом языке программирования, что связано с его происхождением как пародия на другие языки. [10]

Пародия и пародия [ править ]

Одна из целей эзотерических языков программирования — пародировать или подделывать существующие языки и тенденции в области программирования. [10] Например, первый эзотерический язык INTERCAL возник как пародия на языки, использовавшиеся в 1960-х годах, такие как APL , Fortran и COBOL . Правила INTERCAL кажутся обратными правилам других языков. [11] Однако предметом пародии не всегда является другой устоявшийся язык программирования. Например, Шекспира можно рассматривать как подделку структуры шекспировских пьес. Язык Ок! — это пародия на Brainfuck , где восемь команд Brainfuck заменены различными звуками орангутанга, например «Ок. Ок?» [7]

Примеры [ править ]

Бефунге [ править ]

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

 "dlroW olleH"  >  :  v 
               ^  ,  _@ 

Существует множество версий Befunge, наиболее распространенной из которых является Befunge-93, названная так потому, что она была выпущена в 1993 году. [12]

Бинарное лямбда-исчисление [ править ]

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

Brainfuck [ править ]

Brainfuck разработан с учетом крайнего минимализма и приводит к запутанному коду, в котором программы содержат только восемь различных символов. Следующая программа выводит «Hello, world!»: [14]

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

Все персонажи, кроме +-<>,.[] игнорируются.

Курица [ править ]

У курицы всего три токена: слово «курица», « » (символ пробела) и символ новой строки. Компилятор интерпретирует количество «цыплят» в строке как инструкцию кода операции, которую он использует для манипулирования данными в стеке. Простая программа для курицы может содержать десятки строк, в которых нет ничего, кроме слова «курица», повторяющегося бесчисленное количество раз. [15] Курицу изобрел Торбьорн Сёдерстедт, который черпал вдохновение для создания языка из пародии на научную диссертацию. [16] [17] [18]

Начальник [ править ]

Chef — стек-ориентированный язык программирования , созданный Дэвидом Морганом-Маром и предназначенный для того, чтобы программы выглядели как кулинарные рецепты . [19] Программы состоят из заголовка, списка переменных и их значений данных, а также списка инструкций по работе со стеком. [20] Шутливый принцип проектирования гласит, что «рецепты программ должны не только генерировать достоверные результаты, но и быть простыми в приготовлении и вкусными», и Морган-Мар отмечает, что пример «Hello, World!» программа с «101 яйцом» и «111 чашками масла» позволит производить «много еды на одного человека». [20] [21]

ФРАКТРАН [ править ]

Программа FRACTRAN представляет собой упорядоченный список положительных дробей вместе с начальным входным положительным целым числом. . Программа запускается путем умножения целого числа по первой дроби в списке для которого является целым числом. Целое число затем заменяется на и правило повторяется. Если ни одна дробь в списке не дает целое число при умножении на , программа останавливается. FRACTRAN был изобретен математиком Джоном Конвеем . [22]

Гольфскрипт [ править ]

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

ИНТЕРКАЛ [ править ]

INTERCAL , сокращение от «Язык компилятора без произносимого акронима», был создан в 1972 году как пародия на высмеивание аспектов различных языков программирования того времени. [4]

JSFuck [ править ]

JSFuck — это эзотерический стиль программирования JavaScript , в котором код пишется с использованием всего шести символов: [, ], (, ), !, и +. В отличие от Brainfuck, для которого требуется собственный компилятор или интерпретатор, JSFuck является допустимым кодом JavaScript, а это означает, что программы JSFuck можно запускать в любом веб-браузере или движке, интерпретирующем JavaScript. [24] [25] Он использовался в ряде атак с использованием межсайтового сценария (XSS) на такие веб-сайты, как eBay , из-за его способности обходить фильтры обнаружения межсайтового сценария. [26]

ЛОЛКОД [ править ]

LOLCODE напоминает речь лолкотов . Ниже приведен пример «Hello World»:

ХАЙ
 МОЖЕТ ЕСТЬ STDIO?
 ВИДИМЫЙ «МИР ХАЙ!»
 ПОКА
 

Хотя семантика LOLCODE не является чем-то необычным, его синтаксис описывается как лингвистическое явление, представляющее собой необычный пример неформальной речи и интернет-сленга в программировании. [27]

Мальбольге [ править ]

Malbolge (названный в честь 8-го круга ада ) был задуман как самый сложный и эзотерический язык программирования. Помимо других особенностей, код является самомодифицирующимся, и эффект инструкции зависит от ее адреса в памяти. [28]

Пит [ править ]

Программа Piet, печатающая «Piet»
Программа «Hello World» в Piet

Piet — язык, разработанный Дэвидом Морган-Маром , чьи программы представляют собой растровые изображения , похожие на абстрактное искусство . [29] Выполнением управляет «указатель», который перемещается по изображению от одной непрерывно окрашенной области к другой. Процедуры выполняются, когда указатель выходит из региона.

Имеется 20 цветов, для которых задано поведение: 18 «красочных» цветов, которые упорядочены по 6-ступенчатому циклу оттенка и 3-ступенчатому циклу яркости; и черно-белые, которые не заказываются. При выходе из «красочного» цвета и вводе другого выполняемая процедура определяется количеством ступеней изменения оттенка и яркости. В черный нельзя войти; когда указатель пытается войти в черную область, вместо этого изменяются правила выбора следующего блока. Если испробованы все возможные правила, программа завершается. Области за пределами изображения также считаются черными. Белый не выполняет операций, но позволяет указателю «пройти». Поведение цветов, отличных от указанных 20, остается на усмотрение компилятора или интерпретатора. [29] [ нужен неосновной источник ]

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

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

РЕОН-4213 [ править ]

Язык программирования REON-4213 является примером смешанного эзотерического языка, языка программирования и музыкального языка, смешанного вместе и используемого в серии видеоигр Ar tonelico . Этот уникальный формат позволяет видеоигре затронуть тему программирования в развлекательной форме, подходящей для более молодой аудитории.

Хотя этот язык нельзя использовать для выражения кода приложения, он использует концепции реальных языков программирования, таких как C++ и JavaScript, для представления идей и структур программного кода.

Рокстар [ править ]

Rockstar — это язык программирования, предназначенный для создания программ, которые также представляют собой в стиле хэйр-метал пауэр-баллады . Его создал Дилан Битти. [32] [33] [34]

Шекспир [ править ]

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

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

Рассказчик [ править ]

Storyteller — это язык компьютерного программирования, созданный для того, чтобы программы выглядели как богатые, эмоциональные повествования. [35]

Унлямбда [ править ]

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

Пробелы [ править ]

В пробелах используются только пробельные символы (пробел, табуляция и возврат), игнорируя все остальные символы, которые, следовательно, могут использоваться для комментариев. Это противоположность многим традиционным языкам, которые не различают разные символы пробелов, рассматривая табуляцию и пробел одинаково. Это также позволяет скрывать программы с пробелами в исходном коде программ на таких языках, как C. [ нужна цитата ]

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

Культурный контекст эсолангов изучал Джефф Кокс, который пишет, что эсоланги «перемещают внимание от командования и контроля к культурному самовыражению и отказу». [37] рассматривая эсоланги как нечто похожее на кодовое искусство и кодовую поэзию, например, Breeze Mez мезангеле , убеждение, разделяемое другими в этой области. [38] Дэниел Темкин описывает Brainfuck как «отказывающую ослабить границу между человеческим выражением и ассемблерным кодом и тем самым отправляющую нас в нелепое логическое путешествие». [39] разоблачение внутреннего конфликта между человеческим мышлением и компьютерной логикой путем деконструкции их взаимоотношений. Он связывает программирование внутри эсоланга с выполнением оценки событий, например, событий движения Флюксус , где воспроизведение нерегулярных правил логики в коде проясняет точку зрения языка. [40]

Ссылки [ править ]

  1. ^ Маклин А., Гриффитс Д., Коллинз Н. и Виггинс Г. (2010). «Визуализация живого кода». В электронной визуализации и искусстве , Лондон: 2010.
  2. ^ Мэтью Фуллер, Исследования программного обеспечения , MIT Press, 2008 г.
  3. ^ Эрик С. Рэймонд (1996). Новый словарь хакера . МТИ Пресс. п. 258. ИСБН  978-0-262-68092-9 .
  4. ^ Перейти обратно: а б Вудс, Дональд Р.; Лайон, Джеймс М. (1973), Справочное руководство по языку программирования INTERCAL , Muppetlabs.com , получено 1 мая 2023 г.
  5. ^ «Интервью с Воутером ван Оортмерсеном» . Эзотерические.коды . 1 июля 2015 года . Проверено 1 мая 2023 г.
  6. ^ Фуллер, Мэтью (2008). Программное обеспечение: лексикон . МТИ Пресс. ISBN  978-0-262-06274-9 . OCLC   1156851190 .
  7. ^ Перейти обратно: а б с Морр, Себастьян. «Эзотерические языки программирования». (2015).
  8. ^ Кокс 2013 .
  9. ^ Майк (31 марта 2013 г.). «Выпечка торта «Привет, мир»» . Продукты разума Майка . Проверено 1 мая 2023 г.
  10. ^ Перейти обратно: а б с д Матеас М. и Монфор Н. Бокс, Мрачно: запутывание, странные языки и эстетика кода. В «Цифровом искусстве и культуре: Цифровой опыт: дизайн, эстетика, практика» (DAC 2005) , Копенгаген, Дания, 2005.
  11. ^ Габури, Джейкоб (2018). «Критическое разрушение: к странным вычислениям». В Джентери Сэйерс (ред.). Routledge Companion по медиа-исследованиям и цифровым гуманитарным наукам . Нью-Йорк: Рутледж. стр. 483–491. дои : 10.4324/9781315730479-50 . ISBN  978-1-315-73047-9 .
  12. ^ «Языки» .
  13. ^ Джон Тромп. «Самый функциональный» . Международный конкурс запутанного кода C.
  14. ^ "Эль Брейнфак" . копировать.sh . Проверено 30 ноября 2022 г.
  15. ^ « «Привет, мир» на эзотерических языках программирования? (Эсоланги)» . Сообщество разработчиков 👩‍💻👨‍💻 . 25 июля 2020 г. Проверено 4 декабря 2022 г.
  16. ^ «Самые странные языки программирования | Программирование» . www.omnesgroup.com . 8 августа 2018 года . Проверено 4 декабря 2022 г.
  17. ^ «8 глупых языков программирования» . 27 апреля 2022 г.
  18. ^ Hongkiat.com (8 сентября 2021 г.). «10 самых странных языков программирования, том 2» . Хонкиат . Проверено 4 декабря 2022 г.
  19. ^ Козенс, Саймон (2005). Продвинутое программирование на Perl . О'Рейли Медиа. п. 269. ИСБН  978-0-596-00456-9 . Последней диковинкой Acme и одной из моих любимых является Acme::Chef, реализация языка программирования Chef Дэвида Моргана-Мара. В Chef программы выражены в виде рецептов:...
  20. ^ Перейти обратно: а б Морган-Мар, Дэвид (24 марта 2011 г.). «Шеф» . Эзотерические языки программирования DM . Самостоятельно опубликовано . Проверено 1 мая 2023 г.
  21. ^ Морган-Мар, Дэвид (28 июня 2014 г.). «Шеф – Привет, мир» . Эзотерические языки программирования DM . Самостоятельная публикация . Проверено 1 мая 2023 г.
  22. ^ Кнейзель, Рональд (2022). Странный код: эзотерические языки, которые снова делают программирование увлекательным . Нет крахмального пресса. п. 217. ИСБН  978-1718502406 .
  23. ^ Смит, Даррен (2007). «Учебник по гольф-скрипту» .
  24. ^ Бейли, Джейн (29 февраля 2016 г.). «Торги на безопасность» . Ежедневный WTF . Проверено 2 марта 2020 г.
  25. ^ «Изучение JSF*ck» . аллигатор.io . Проверено 2 марта 2020 г.
  26. ^ Дэн Гудин (3 февраля 2016 г.). «eBay не планирует исправлять «серьезную» ошибку, позволяющую распространять вредоносное ПО [обновлено]» . Арс Техника .
  27. ^ Забенков А.А.; Морел Морель, окружной прокурор (2014). «Эзотерические языки программирования как современное семиотическое направление» . Experientia Est Optima Magistra: Собрание произведений искусства . 3 . Белгородский государственный университет: 170.
  28. ^ Темкин, Дэниел (3 ноября 2014 г.). «Интервью с Беном Олмстедом» . эзотерические.коды . Проверено 7 января 2021 г.
  29. ^ Перейти обратно: а б с Морган-Мар, Дэвид (25 января 2008 г.). «Пит» . Проверено 1 мая 2023 г.
  30. ^ Кнейзель, Рональд (2022). Странный код: эзотерические языки, которые снова делают программирование увлекательным . Нет крахмального пресса. стр. 246–247. ISBN  978-1718502406 .
  31. ^ Кокс 2013 , с. 6
  32. ^ «рок-звезда: дом» . codewithrockstar.com .
  33. ^ Опубликовано Льюри, Фрейзер (1 августа 2018 г.). «Познакомьтесь с ученым, создавшим язык программирования, основанный на балладах о силе» . громче звук .
  34. ^ Доктороу, Кори (25 июля 2018 г.). «Rockstar: язык программирования, код которого принимает форму мощных баллад» . Боинг-Боинг .
  35. ^ «Сказочник» . www.github.com .
  36. ^ Чу-Кэрролл, Марк К. (11 августа 2006 г.). «Пятничное патологическое программирование: Унлямбда, или Программирование без переменных» . Хорошая математика, плохая математика (блог) . Научные блоги.
  37. ^ Кокс 2013 , с. 5
  38. ^ «Истинный смысл эзотерических языков программирования» . Апифоника . Проверено 30 ноября 2023 г.
  39. ^ Темкин, Дэниел (15 января 2014 г.). «Сбой и взаимодействие человека и компьютера» . НООАРТ: Журнал беспредметного искусства (1).
  40. ^ Темкин, Даниил (8 мая 2013 г.). "травка мозгов" . Журнал «Медиа-Н» (весна 2013) . Проверено 1 мая 2023 г.

Библиография [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 87D7322D9F266805CD33826EEE96CBC9__1717757400
URL1:https://en.wikipedia.org/wiki/Esoteric_programming_language
Заголовок, (Title) документа по адресу, URL1:
Esoteric programming language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)