Язык конкатенационного программирования

Тип языка программирования

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

Пример

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

баз ( бар ( фу ( х )))

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

x foo бар баз

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

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

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

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

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

Реализации

Первым конкатенативным языком программирования был Forth , хотя Joy был первым языком, назвавшим себя конкатенативным. Другие конкатенативными языками являются dc , Factor , Onyx, PostScript и RPL .

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

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

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

Ссылки

  1. ^ "Кристофер Диггинс: Что такое конкатенативный язык". Drdobbs.com. 2008-12-31 . Получено 2013-07-01 .
  2. ^ "Имя кода, а не значения". Concatenative.org . Получено 13 сентября 2013 г. .
  3. ^ "Конкатенативный язык". Concatenative.org . Получено 13 сентября 2013 г. .
  4. ^ "Rationale for Joy, a functional language". Архивировано из оригинала 2011-01-15.
  5. ^ ab "Почему конкатенативное программирование имеет значение" . Получено 13 сентября 2013 г.
  6. ^ "von Thun, Manfred: Joy в сравнении с другими функциональными языками". Архивировано из оригинала 2011-10-06.
  7. ^ "von Thun, Manfred: Mathematical foundations of Joy". Архивировано из оригинала 2010-07-31.
  8. ^ "Генри Бейкер: Линейная логика и стеки перестановок — Четвертый должен быть первым". Home.pipeline.com. Архивировано из оригинала 2014-07-24 . Получено 2013-07-01 .
  9. ^ "Конкатенативное слово XY". Nsl.com . Получено 01.07.2013 .
  10. ^ "Язык программирования Enchilada". Enchiladacode.nl . Получено 01.07.2013 .
  11. ^ "Язык программирования Om". Om-language.org . Получено 01.07.2013 .
  12. ^ "Cat Specification". Cat-language.com. Архивировано из оригинала 2015-02-05 . Получено 2013-07-01 .
  • concatenative.org: Вики о конкатенативных языках
  • Staapl: Продолжение о схеме для встроенных контроллеров
  • Язык программирования Энчилада
  • Конкатенативный язык XY
  • Язык программирования Om
Взято с "https://en.wikipedia.org/w/index.php?title=Конкатенативный_язык_программирования&oldid=1268268248"