~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 49E4B1226A23E1026C9EB03EB7986132__1706815020 ✰
Заголовок документа оригинал.:
✰ Concatenative programming language - Wikipedia ✰
Заголовок документа перевод.:
✰ Конкатенативный язык программирования — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Concatenative_programming_language ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/49/32/49e4b1226a23e1026c9eb03eb7986132.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/49/32/49e4b1226a23e1026c9eb03eb7986132__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:14:00 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 1 February 2024, at 22:17 (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

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

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

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

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

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

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

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

х фу бар баз
 

Функции и процедуры, написанные в конкатенативном стиле, не относятся к уровню значений , т.е. они обычно не представляют структуры данных, с которыми они работают, с явными именами или идентификаторами . Вместо этого они являются функциональным уровнем — функция определяется как конвейер или последовательность операций, которые берут параметры из неявной структуры данных , с которой работают все функции, и возвращают результаты функции в эту общую структуру, чтобы они были использованы следующий оператор. [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
Номер скриншота №: 49E4B1226A23E1026C9EB03EB7986132__1706815020
URL1:https://en.wikipedia.org/wiki/Concatenative_programming_language
Заголовок, (Title) документа по адресу, URL1:
Concatenative programming language - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)