stringtranslate.com

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

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

Пример

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

y знак равно foo ( x ) z знак равно бар ( y ) ш знак равно baz ( z )      

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

x foo бар баз

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

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

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

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

Реализации

Первым конкатенативным языком программирования был 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 .

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