Категориальная абстрактная машина

Категориа́льная абстра́ктная маши́на (КАМ) — это модель вычисления программы, в которой сохраняются особенности

аппликативного, функционального либо композиционного стиля. Она опирается на технику аппликативного вычисления.

Один из подходов к реализации функциональных языков дается машиной, основанной на суперкомбинаторах, или SK-машиной Дэвида Тёрнера. Представление о категориальной абстрактной машине даёт альтернативный подход[уточнить]. Строение КАМ включает синтаксическую, семантическую и вычислительную конституэнты[уточнить]. Синтаксис основан на формализме де Брёйна, использование которого позволяет преодолеть трудность, вызываемые применением связанных переменных. Семантика по своим выразительным возможностям аналогична SK-машине. Вычисления выполняются по аналогии тем вычислениям, которые использованы в SECD-машине Лэндина. Занимая такие позиции[уточнить], категориальная абстрактная предоставляет непротиворечивые основания для синтаксиса, семантики и теории вычислений. Такая интеграция возникает не без влияния функционального стиля программирования.

Концепция категориальной абстрактной машины возникла в середине 1980-х годов и играет роль варианта теории вычислений для программистов[уточнить]. С теоретической точки зрения, категориальная абстрактная машина представлена декартово замкнутой категорией и погружена в комбинаторную логику. Машинные инструкции являются объектами-комбинаторами, образуя в совокупности специальный вариант комбинаторной логики — категориальную

комбинаторную логику. Категориальная абстрактная машина является ясным и математически корректным представлением языков функционального программирования.

Используя равенства выражений, машинный код удаётся оптимизировать. Особенно отчётливо проявляют различные механизмы вычислений — рекурсия, ленивые вычисления, — а также механизмы передачи параметров — вызов по имени, вызов по значению и т. п. С теоретической точки зрения категориальная абстрактная машина сохраняет все преимущества

объектно-ориентированного подхода к программированию.

Источник: Википедия

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я