Jump to content

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

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

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

y = foo(x)
z = bar(y)
w = baz(z)

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

x foo bar baz

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

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

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

[ редактировать ]

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

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

Реализации

[ редактировать ]

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

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

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

См. также

[ редактировать ]
  1. ^ «Кристофер Диггинс: Что такое конкатенативный язык» . Drdobbs.com. 31 декабря 2008 г. Проверено 1 июля 2013 г.
  2. ^ «Код имени, а не значения» . Concatenative.org . Проверено 13 сентября 2013 г.
  3. ^ «Конкатенативный язык» . Concatenative.org . Проверено 13 сентября 2013 г.
  4. ^ «Обоснование Joy, функционального языка» . Архивировано из оригинала 15 января 2011 г.
  5. ^ Перейти обратно: а б «Почему конкатенативное программирование имеет значение» . Проверено 13 сентября 2013 г.
  6. ^ «фон Тун, Манфред: радость по сравнению с другими функциональными языками» . Архивировано из оригинала 6 октября 2011 г.
  7. ^ «фон Тун, Манфред: Математические основы радости» . Архивировано из оригинала 31 июля 2010 г.
  8. ^ «Генри Бейкер: линейная логика и стеки перестановок — четвертый должен быть первым» . Home.pipeline.com. Архивировано из оригинала 24 июля 2014 г. Проверено 1 июля 2013 г.
  9. ^ «Конкатенативный язык XY» . NSL.com . Проверено 1 июля 2013 г.
  10. ^ «Язык программирования Энчилада» . Enchiladacode.nl . Проверено 1 июля 2013 г.
  11. ^ «Язык программирования Ом» . Ом-язык.org . Проверено 1 июля 2013 г.
  12. ^ «Спецификация кота» . Cat-language.com. Архивировано из оригинала 5 февраля 2015 г. Проверено 1 июля 2013 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 73d4833ef0ea368b789263a80907e792__1706815020
URL1:https://arc.ask3.ru/arc/aa/73/92/73d4833ef0ea368b789263a80907e792.html
Заголовок, (Title) документа по адресу, URL1:
Concatenative programming language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)