Конкатенативный язык программирования - Concatenative programming language

А конкатенативный язык программирования это без точек компьютер язык программирования в котором все выражения обозначают функции, и сопоставление выражения обозначает функциональная композиция.[1] Конкатенативное программирование заменяет приложение-функция, что характерно для других стилей программирования, с функциональная композиция как способ построения по умолчанию подпрограммы.

Пример

Например, последовательность операций на прикладном языке, подобная следующей:

у = фу(Икс)z = бар(у)ш = баз(z)

... записывается на конкатенативном языке как последовательность функций без параметров:[2]

foo bar baz

Функции и процедуры, написанные в конкатенативном стиле, не уровень стоимости, т.е. они обычно не представляют структуры данных, с которыми они работают, с явными именами или идентификаторы; вместо этого они функциональный уровень - функция определяется как трубопровод, последовательность операций, которые принимают параметры из неявной структуры данных, в которой работают все функции, и возвращают результаты функции в эту общую структуру, чтобы она была использована следующим оператором.[3]

Сочетание композиционного семантика с синтаксис то, что отражает такую ​​семантику, делает конкатентивные языки легко поддающимися алгебраическому манипулированию программами;[4] хотя может быть трудно написать математические выражения прямо в них.[5] Конкатенативные языки могут быть эффективно реализованы с помощью штабелеукладчик, и обычно неявно присутствуют в виртуальные машины в виде своих наборы инструкций.[5]

Большая часть оригинальной работы по теории конкатенативного языка была выполнена Манфред фон Тун.[нужна цитата ]

Характеристики

Свойства конкатенативных языков являются результатом их композиционного синтаксиса и семантики:

  • Редукция любого выражения - это упрощение одной функции до другой функции; никогда не нужно иметь дело с применением функций к объектам.[6]
  • Любое подвыражение можно заменить именем, представляющим то же подвыражение. В конкатенативном сообществе это называется факторинг и широко используется для упрощения программ на более мелкие части.
  • Синтаксис и семантика конкатенативных языков образуют алгебраическую структуру моноид.[7]
  • Конкатенативные языки можно сделать хорошо подходящими для реализации, вдохновленной линейная логика где нет мусор когда-либо генерируется.[8]

Реализации

Первый язык конкатенативного программирования был Четвертый, несмотря на то что Радость был первым языком, который называл себя конкатенативным. Другие конкатенативные языки: Фактор, Оникс, PostScript, и РПЛ.

Большинство существующих конкатенативных языков на основе стека; это не требование, и были предложены другие модели.[9][10][11] Конкатенативные языки в настоящее время используются для встроенный, рабочий стол, и веб-программирование, так как целевые языки, и в исследовательских целях.

Большинство конкатенативных языков динамически типизированный. Исключения включают статически типизированный Кошачий язык.[12]

Смотрите также

Рекомендации

  1. ^ "Кристофер Диггинс: Что такое конкатенативный язык". Drdobbs.com. 2008-12-31. Получено 2013-07-01.
  2. ^ «Код имени, а не значения». Concatenative.org. Получено 13 сентября 2013.
  3. ^ «Конкатенативный язык». Concatenative.org. Получено 13 сентября 2013.
  4. ^ «Обоснование радости, функциональный язык». Архивировано из оригинал на 2011-01-15.
  5. ^ а б «Почему имеет значение конкатенативное программирование». Получено 13 сентября 2013.
  6. ^ «фон Тун, Манфред: радость по сравнению с другими функциональными языками». Архивировано из оригинал на 2011-10-06.
  7. ^ "Фон Тун, Манфред: математические основы радости". Архивировано из оригинал 31 июля 2010 г.
  8. ^ "Генри Бейкер: линейная логика и перестановочные стеки - четвертый должен быть первым". Home.pipeline.com. Архивировано из оригинал в 2014-07-24. Получено 2013-07-01.
  9. ^ «Конкатенативный язык XY». Nsl.com. Получено 2013-07-01.
  10. ^ "Язык программирования Энчилада". Enchiladacode.nl. Получено 2013-07-01.
  11. ^ "Язык программирования Ом". Om-language.org. Получено 2013-07-01.
  12. ^ «Спецификация кошки». Cat-language.com. Архивировано из оригинал на 2015-02-05. Получено 2013-07-01.

внешняя ссылка