Введение
Денотационная семантика модели акторов является предметом исследования в области теории доменов для акторов. Историческое развитие этой темы изложено в [Hewitt 2008b].
Композиционность в языках программирования
Важным аспектом денотационной семантики языков программирования является композиционность, посредством которой денотация программы строится из денотаций ее частей. Например, рассмотрим выражение "". Композиционность в этом случае заключается в том, чтобы предоставить значение для "" в терминах значений и . Модель актора обеспечивает современный и очень общий способ анализа композиционности программ. Скотт и Стречи [1971] предложили свести семантику языков программирования к семантике лямбда-исчисления и, таким образом, унаследовать денотационную семантику лямбда-исчисления. Однако оказалось, что параллельные вычисления нельзя реализовать в лямбда-исчислении (см. Неопределенность в параллельных вычислениях). Таким образом, возникла проблема того, как обеспечить модульную денотационную семантику для языков параллельного программирования. Одним из решений этой проблемы является использование модели вычислений Actor. В модели Actor программы являются акторами, которым отправляются сообщения с адресом окружения (описанного ниже), так что программы наследуют свою денотационную семантику из денотационной семантики модели Actor (идея, опубликованная в Hewitt [2006]).
The Actor model provides a modern and very general way the compositionality of programs can be analyzed. Scott and Strachey [1971] proposed that the semantics of programming languages be reduced to the semantics of the lambda calculus and thus inherit the denotational semantics of the lambda calculus. However, it turned out that concurrent computation could not be implemented in the lambda calculus (see Indeterminacy in concurrent computation). Thus there arose the problem of how to provide modular denotational semantics for concurrent programming languages. One solution to this problem is to use the Actor model of computation. In Actor model, programs are Actors that are sent messages with the address of an environment (explained below) so that programs inherit their denotational semantics from the denotational semantics of the Actor model (an idea published in Hewitt [2006]).
Арифметические выражения
Для другого примера рассмотрим Актора для выражения "", у которого есть адреса двух других акторов (процессов). Когда составной Актор (процесс) получает сообщение с адресами Актора-окружения E и клиента C, он отправляет сообщения и с Актором-окружением E и отправляет клиенту C нового Актора (процесса) C0. Когда C0 получает два значения N1 и N2, он отправляет C значение N1 - N2. Таким образом, денотационная семантика для исчислений процессов и модели Актора предоставляет денотационную семантику для "" в терминах семантики для и .
Другие конструкции языков программирования
Представленная выше денотационная композиционная семантика очень общая и может применяться к функциональным, императивным, параллельным, логическим и другим программам (см. [Hewitt 2008a]). Например, она легко предоставляет денотационную семантику для конструкций, которые сложно формализовать другими подходами, такими как задержки и обещания.
Модель Клингера
В своей докторской диссертации Уилл Клингер разработал первую денотационную семантику для модели акторов.