Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Актер модель в информатике является математической моделью из параллельного вычисления , что лечит актер как универсальный примитив параллельного вычисления. В ответ на сообщение он получает, актер может: сделать местные решения, создавать больше актеров, посылать больше сообщений, а также определить , как реагировать на следующее сообщение получено. Акторы могут изменять свое собственное частное состояние , но могут влиять друг на друга только косвенно через обмен сообщениями (устраняя необходимость в синхронизации на основе блокировок ).

Модель актера возникла в 1973 году [1] Он был использован как в качестве основы для теоретического понимания по вычислению и в качестве теоретической основы для нескольких практических реализаций в параллельных системах . Связь модели с другой работой обсуждается в модели актора и расчетах процесса .

История [ править ]

По словам Карла Хьюитта , в отличие от предыдущих моделей вычислений, модель актора была вдохновлена физикой , включая общую теорию относительности и квантовую механику . [ необходима цитата ] На это также повлияли языки программирования Lisp , Simula , ранние версии Smalltalk , системы на основе возможностей и коммутация пакетов. Его разработка была «мотивирована перспективой создания высокопараллельных вычислительных машин, состоящих из десятков, сотен или даже тысяч независимых микропроцессоров, каждый со своей собственной локальной памятью и коммуникационным процессором, обменивающихся данными через высокопроизводительную коммуникационную сеть». [2] С тех пор появление массового параллелизма в многоядерных и многоядерных компьютерных архитектурах возродило интерес к модели акторов .

После публикации Хьюитта, Бишопа и Штайгера 1973 года Ирен Грейф разработала операционную семантику для модели акторов в рамках своего докторского исследования. [3] Два года спустя Генри Бейкер и Хьюитт опубликовали набор аксиоматических законов для систем акторов. [4] [5] Другие важные вехи включают в себя диссертацию Уильяма Клингера 1981 года, в которой вводится денотационная семантика, основанная на областях власти [2], и диссертация Гул Ага 1985 года, в которой была развита основанная на переходах семантическая модель, дополняющая семантическую модель Клингера. [6] Это привело к полной разработкетеория модели акторов .

Основную работу по внедрению программного обеспечения проделали Расс Аткинсон, Джузеппе Аттарди, Генри Бейкер, Джерри Барбер, Питер Бишоп, Питер де Йонг, Кен Кан, Генри Либерман, Карл Мэннинг, Том Рейнхардт, Ричард Штайгер и Дэн Терио в группе семантики передачи сообщений в Массачусетский технологический институт (MIT). Исследовательские группы под руководством Чака Зейтца из Калифорнийского технологического института (Калифорнийский технологический институт) и Билла Далли из Массачусетского технологического института создали компьютерные архитектуры, которые в дальнейшем развили передачу сообщений в модели. См. Реализацию модели Актера .

Исследования на модели актера была проведена в Калифорнийский технологический институт , Университет Киото Tokoro лаборатории микроэлектроники и компьютерных технологий корпорации (MCC), MIT лаборатории искусственного интеллекта , SRI , Стэнфордского университета , Университета штата Иллинойс в Урбана-Шампань , [7] Пьер и Мари Кюри университет (университет Париж 6), университет Пизы , Токийский университет Йонезава Лаборатория, Центр Wiskunde и Informatica (КРИ) и в других местах.

Основные концепции [ править ]

Модель актера придерживается философии, что все является актером . Это похоже на объектную философию « все есть», используемую некоторыми объектно-ориентированными языками программирования .

Актер - это вычислительный объект, который в ответ на полученное сообщение может одновременно:

  • отправлять конечное количество сообщений другим участникам;
  • создать конечное число новых участников;
  • обозначить поведение, которое будет использоваться для следующего полученного сообщения.

Не существует предполагаемой последовательности вышеуказанных действий, и они могут выполняться параллельно.

Разделение отправителя и отправляемых сообщений было фундаментальным достижением модели акторов, обеспечивающей асинхронную связь и структуры управления в качестве шаблонов передачи сообщений . [8]

Получатели сообщений идентифицируются по адресу, который иногда называют «почтовый адрес». Таким образом, актер может общаться только с теми акторами, адреса которых у него есть. Он может получить их из сообщения, которое он получает, или, если адрес предназначен для актера, который он сам создал.

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

Формальные системы [ править ]

За прошедшие годы было разработано несколько различных формальных систем, которые позволяют рассуждать о системах в модели акторов. Они включают:

  • Операционная семантика [3] [9]
  • Законы для акторных систем [4]
  • Денотационная семантика [2] [10]
  • Семантика перехода [6]

Существуют также формализмы, которые не полностью соответствуют модели акторов, поскольку они не формализуют гарантированную доставку сообщений, включая следующие (см. Попытки связать семантику акторов с алгеброй и линейной логикой ):

  • Несколько разных акторных алгебр [11] [12] [13]
  • Линейная логика [14]

Приложения [ править ]

Модель акторов может использоваться в качестве основы для моделирования, понимания и рассуждений о широком спектре параллельных систем . Например:

  • Электронную почту ( электронную почту ) можно смоделировать как систему субъектов. Учетные записи моделируются как субъекты, а адреса электронной почты - как адреса субъектов .
  • Веб-службы могут быть смоделированы с помощью конечных точек протокола простого доступа к объектам ( SOAP ), смоделированных как адреса субъектов.
  • Объекты с блокировками ( например , как в Java и C # ) могут быть смоделированы как сериализатор при условии, что их реализации таковы, что сообщения могут поступать непрерывно (возможно, сохраняя их во внутренней очереди ). Сериализатор - это важный тип актора, определяемый тем свойством, что он постоянно доступен для поступления новых сообщений; каждое сообщение, отправленное в сериализатор, гарантированно будет доставлено.
  • Нотация тестирования и управления тестированием ( TTCN ), как TTCN-2, так и TTCN-3 , довольно точно следует модели актора. В TTCN субъектом является тестовый компонент: либо параллельный тестовый компонент (PTC), либо основной тестовый компонент (MTC). Компоненты тестирования могут отправлять и получать сообщения удаленным партнерам (компоненты однорангового тестирования или интерфейс тестовой системы), причем последний идентифицируется по его адресу. Каждый тестовый компонент имеет привязанное к нему дерево поведения; тестовые компоненты работают параллельно и могут быть динамически созданы родительскими тестовыми компонентами. Встроенные языковые конструкции позволяют определять действия, которые должны выполняться при получении ожидаемого сообщения из внутренней очереди сообщений, например, отправка сообщения другому одноранговому объекту или создание новых тестовых компонентов.

Семантика передачи сообщений [ править ]

Модель актора касается семантики передачи сообщений .

Неограниченная полемика о недетерминизме [ править ]

Возможно, первые параллельные программы были обработчиками прерываний . В процессе нормальной работы компьютер должен был иметь возможность получать информацию извне (символы с клавиатуры, пакеты из сети и т . Д. ). Поэтому, когда информация поступала, выполнение компьютера было прервано, и был вызван специальный код (называемый обработчиком прерывания), чтобы поместить информацию в буфер данных, откуда она могла быть впоследствии извлечена.

В начале 60-х годов прошлого века прерывания стали использоваться для имитации одновременного выполнения нескольких программ на одном процессоре. [15] Наличие параллелизма с разделяемой памятью породило проблему управления параллелизмом . Первоначально эта проблема задумывалась как проблема взаимного исключения на одном компьютере. Эдсгер Дейкстра разработал семафоры, а позже, между 1971 и 1973 годами, [16] Тони Хоар [17] и Пер Бринч Хансен [18] разработали мониторы.решить проблему взаимного исключения. Однако ни одно из этих решений не предоставляет конструкцию языка программирования, которая инкапсулирует доступ к общим ресурсам. Эта инкапсуляция была позже выполнена конструкцией сериализатора ([Hewitt and Atkinson 1977, 1979] и [Atkinson 1980]).

Первые модели вычислений ( например , машины Тьюринга , постановки Поста, лямбда-исчисление и т. Д. ) Были основаны на математике и использовали глобальное состояние для представления вычислительного шага (позже обобщенного в [McCarthy and Hayes 1969] и [Dijkstra 1976] см. Упорядочения событий в сравнении с глобальным состоянием ). Каждый вычислительный шаг был от одного глобального состояния вычисления к следующему глобальному состоянию. Подход глобального состояния был продолжен в теории автоматов для конечных автоматов и машин с выталкивающим стеком , включая их недетерминированныеверсии. Такие недетерминированные автоматы обладают свойством ограниченного недетерминизма ; то есть, если машина всегда останавливается при запуске в своем начальном состоянии, то существует ограничение на количество состояний, в которых она останавливается.

Эдсгер Дейкстра развил недетерминированный подход глобального состояния. Модель Дейкстры вызвала споры относительно неограниченного недетерминизма (также называемого неограниченной неопределенностью ), свойства параллелизма, благодаря которому величина задержки в обслуживании запроса может стать неограниченной в результате арбитража разногласий за совместно используемые ресурсы, при этом гарантируя, что запрос в конечном итоге будет обслуживаться. Хьюитт утверждал, что модель акторов должна обеспечивать гарантию обслуживания. В модели Дейкстры, хотя между выполнением последовательных инструкций на компьютере может быть неограниченное количество времени, (параллельная) программа, начавшаяся в четко определенном состоянии, могла завершиться только в ограниченном количестве состояний [Dijkstra 1976]. Следовательно, его модель не могла предоставить гарантию обслуживания. Дейкстра утверждал, что невозможно реализовать неограниченный недетерминизм.

Хьюитт утверждал иное: нет никаких ограничений, которые могут быть наложены на то, сколько времени потребуется вычислительной схеме, называемой арбитром, для урегулирования (см. Метастабильность (электроника) ). [19] Арбитры используются в компьютерах, чтобы иметь дело с обстоятельствами, когда компьютерные часы работают асинхронно в отношении ввода извне, например , ввода с клавиатуры, доступа к диску, ввода сети и т. Д. Таким образом, для отправки сообщения на адрес может потребоваться неограниченное время. компьютер должен быть получен, и в то же время компьютер может проходить неограниченное количество состояний.

Модель акторов отличается неограниченным недетерминизмом, который был зафиксирован в математической модели Уиллом Клингером с использованием теории предметной области . [2] В модели акторов нет глобального состояния. [ сомнительно ]

Прямое общение и асинхронность [ править ]

Сообщения в модели актора не обязательно буферизуются. Это был резкий разрыв с предыдущими подходами к моделям параллельных вычислений. Отсутствие буферизации вызвало множество недоразумений во время разработки модели акторов и до сих пор остается спорным вопросом. Некоторые исследователи утверждали, что сообщения буферизируются в «эфире» или «среде». Кроме того, сообщения в модели акторов просто отправляются (как пакеты в IP ); синхронное рукопожатие с получателем не требуется.

Создание актера плюс адреса в сообщениях означает переменную топологию [ править ]

Естественным развитием модели акторов было разрешение адресов в сообщениях. Под влиянием сетей с коммутацией пакетов [1961 и 1964] Хьюитт предложил разработать новую модель параллельных вычислений, в которой связь вообще не имела бы каких-либо обязательных полей: они могли быть пустыми. Конечно, если отправитель сообщения желает, чтобы получатель имел доступ к адресам, которых у получателя еще не было, адрес должен быть отправлен в сообщении.

Например, субъекту может потребоваться отправить сообщение субъекту-получателю, от которого он позже ожидает получить ответ, но на самом деле ответ будет обрабатываться третьим компонентом субъекта, который был настроен для приема и обработки ответа (например, , другой субъект, реализующий шаблон наблюдателя ). Исходный субъект мог бы выполнить это, отправив сообщение, которое включает сообщение, которое он хочет отправить, вместе с адресом третьего субъекта, который будет обрабатывать ответ. Этот третий субъект, который будет обрабатывать ответ, называется возобновлением (иногда также называется продолжением или кадром стека ). Когда субъект-получатель готов отправить ответ, он отправляет ответное сообщение вадрес исполнителя возобновления, который был включен в исходное сообщение.

Таким образом, способность субъектов создавать новых субъектов, с которыми они могут обмениваться сообщениями, наряду с возможностью включать адреса других субъектов в сообщения, дает субъектам возможность создавать и участвовать в произвольно изменяемых топологических отношениях друг с другом, во многом как объекты в Simula и других объектно-ориентированных языках также могут быть реляционно скомпонованы в переменные топологии объектов обмена сообщениями.

По своей сути параллельные [ править ]

В отличие от предыдущего подхода, основанного на составлении последовательных процессов, модель акторов была разработана как изначально параллельная модель. В модели акторов последовательность была особым случаем, который происходил из параллельных вычислений, как объяснено в теории модели акторов .

Нет требований к порядку поступления сообщений [ править ]

Хьюитт возражал против добавления требования о том, что сообщения должны прибывать в том порядке, в котором они отправлены субъекту. Если требуется упорядочение выходных сообщений, его можно смоделировать с помощью актора очереди, который предоставляет эту функциональность. Такой субъект очереди будет ставить в очередь поступившие сообщения, чтобы их можно было получить в порядке FIFO . Так что если актер X послал сообщение M1 к актеру Y , а затем X послал другое сообщение M2 в Y , не существует никаких требований , что M1 поступает на Y , прежде чем М2 .

В этом отношении модель актора отражает системы коммутации пакетов, которые не гарантируют, что пакеты должны быть получены в том порядке, в котором они были отправлены. Отсутствие гарантии порядка доставки позволяет коммутировать пакеты для буферизации пакетов, использовать несколько путей для отправки пакетов, повторно отправлять поврежденные пакеты и обеспечивать другие оптимизации.

Например, акторам разрешено конвейерно обрабатывать сообщения. Это означает, что в ходе обработки сообщения M1 субъект может указать поведение, которое будет использоваться для обработки следующего сообщения, а затем фактически начать обработку другого сообщения M2 до того, как он завершит обработку M1 . Тот факт, что субъекту разрешено конвейерно обрабатывать сообщения, не означает, что он долженконвейерная обработка. Конвейерная передача сообщения - это инженерный компромисс. Как внешний наблюдатель узнает, была ли конвейерная обработка сообщения субъектом? В определении актера, созданного возможностью конвейерной обработки, нет двусмысленности. Конечно, в некоторых реализациях возможно выполнить оптимизацию конвейера неправильно, и в этом случае может возникнуть непредвиденное поведение.

Местоположение [ править ]

Еще одна важная характеристика актерской модели - местность.

Локальность означает, что при обработке сообщения субъект может отправлять сообщения только по адресам, которые он получает в сообщении, адресам, которые он уже имел до получения сообщения, и адресам субъектов, которые он создает при обработке сообщения. (Но см. Синтез адресов актеров .)

Также местоположение означает, что нет одновременного изменения в нескольких местах. Этим он отличается от некоторых других моделей параллелизма, например , модели сети Петри, в которой токены одновременно удаляются из нескольких мест и помещаются в другие места.

Составление систем актеров [ править ]

Идея объединения систем акторов в более крупные является важным аспектом модульности, которая была развита в докторской диссертации Гул Ага [6], развитой позже Гул Ага, Яном Мэйсоном, Скоттом Смитом и Кэролайн Талкотт . [9]

Поведение [ править ]

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

Поведение также освободило модель актора от деталей реализации, например , интерпретатора потока токенов Smalltalk-72. Однако важно понимать, что эффективная реализация систем, описываемых моделью акторов, требует обширной оптимизации. См. Подробности в разделе « Реализация модели актера» .

Моделирование других систем параллелизма [ править ]

Другие системы параллелизма ( например , вычисления процессов ) могут быть смоделированы в модели субъекта с использованием протокола двухфазной фиксации . [20]

Теорема о вычислительном представлении [ править ]

В модели акторов есть теорема о вычислительном представлении для систем, которые закрыты в том смысле, что они не получают сообщений извне. Математическое обозначение обозначается замкнутой системы строится из начального поведения S и поведение-аппроксимирующей функции прогрессии S . Они получают все более точные приближения и создают обозначение (значение) для следующего [Hewitt 2008; Clinger 1981]:

Таким образом, S можно математически охарактеризовать с точки зрения всех его возможных поведений (включая те, которые связаны с неограниченным недетерминизмом). Хотя это и не реализация , его можно использовать для доказательства обобщения тезиса Чёрча-Тьюринга-Россера-Клини [Kleene 1943]:

Следствием приведенной выше теоремы является то, что конечный субъект может недетерминированно отвечать несчетным [ уточнить ] количеством различных выходов.

Связь с логическим программированием [ править ]

Одним из ключевых мотивов разработки модели акторов было понимание и решение проблем структуры управления, которые возникли при разработке языка программирования Planner . [ необходимая цитата ] После того, как модель акторов была первоначально определена, важной задачей было понять силу модели по сравнению с тезисом Роберта Ковальски о том, что «вычисления могут быть включены в дедукцию». Хьюитт утверждал, что тезис Ковальского оказался ложным для параллельных вычислений в модели акторов (см. Неопределенность в параллельных вычислениях ).

Тем не менее, были предприняты попытки распространить логическое программирование на параллельные вычисления. Однако Хьюитт и Ага [1991] утверждали, что полученные системы не были дедуктивными в следующем смысле: вычислительные шаги систем параллельного логического программирования не следуют дедуктивно из предыдущих шагов (см. Неопределенность в параллельных вычислениях ). Недавно логическое программирование было интегрировано в модель акторов таким образом, чтобы сохранить логическую семантику. [19]

Миграция [ править ]

Миграция в модели актеров - это способность актеров менять местоположение. Например , в своей диссертации Аки Ёнэдзава смоделировал почтовое отделение, в которое акторы-клиенты могли заходить, менять местоположение внутри во время работы и выходить. Актер, который может мигрировать, может быть смоделирован с помощью актора местоположения, который изменяется при миграции актера. Однако верность этого моделирования является спорной и предметом исследования. [ необходима цитата ]

Безопасность [ править ]

Безопасность субъектов можно защитить следующими способами:

  • проводка, в которой актеры физически связаны
  • компьютерное оборудование, такое как Burroughs B5000 , Lisp machine и т. д.
  • виртуальные машины, такие как виртуальная машина Java , среда CLR и т. д.
  • операционные системы как в системах, основанных на возможностях
  • подпись и / или шифрование актеров и их адресов

Обобщение адресов актеров [ править ]

Тонким моментом в модели актера является способность синтезировать адрес актера. В некоторых случаях безопасность может использоваться для предотвращения синтеза адресов (см. Безопасность ). Однако, если адрес актера представляет собой просто битовую строку, очевидно, что он может быть синтезирован, хотя может быть трудно или даже невозможно угадать адрес актера, если битовые строки достаточно длинные. SOAP использует URL-адрес для адреса конечной точки, по которой можно связаться с субъектом. Поскольку URL-адрес представляет собой символьную строку, его можно легко синтезировать, хотя шифрование может сделать практически невозможным угадание.

Синтез адресов акторов обычно моделируется с помощью маппинга. Идея состоит в том, чтобы использовать систему акторов для отображения фактических адресов акторов. Например, на компьютере структура памяти компьютера может быть смоделирована как система акторов, которая выполняет отображение. В случае адресов SOAP он моделирует DNS и остальную часть сопоставления URL-адресов .

В отличие от других моделей параллелизма при передаче сообщений [ править ]

Первоначально опубликованная работа Робина Милнера по параллелизму [21] была также примечательна тем, что она не была основана на создании последовательных процессов. Его работа отличалась от модели акторов, потому что она была основана на фиксированном количестве процессов фиксированной топологии, передающих числа и строки с помощью синхронной связи. Первоначальная модель взаимодействующих последовательных процессов (CSP) [22], опубликованная Тони Хоаром, отличалась от модели актора, поскольку она была основана на параллельной композиции фиксированного числа последовательных процессов, соединенных в фиксированной топологии, и взаимодействии с использованием синхронной передачи сообщений по именам процессов (см. Модель актора и история вычислений процесса). Более поздние версии CSP отказались от коммуникации, основанной на именах процессов, в пользу анонимной коммуникации по каналам, подход, который также использовался в работе Милнера по исчислению коммуникационных систем и π-исчислению .

Эти ранние модели Милнера и Хора обладали свойством ограниченного недетерминизма. Современные теоретические CSP ([Hoare 1985] и [Roscoe 2005]) явно обеспечивают неограниченный недетерминизм.

Сети Петри и их расширения (например, цветные сети Петри) подобны акторам в том, что они основаны на асинхронной передаче сообщений и неограниченном недетерминизме, в то время как они похожи на ранние CSP в том, что они определяют фиксированные топологии элементарных шагов обработки (переходов) и репозиториев сообщений. (места).

Влияние [ править ]

Модель акторов оказала влияние как на теоретическую, так и на практическую разработку программного обеспечения.

Теория [ править ]

Модель акторов повлияла на развитие π-исчисления и последующих вычислений процессов . В своей лекции Тьюринга Робин Милнер писал: [23]

Теперь чистое лямбда-исчисление состоит всего из двух типов вещей: термов и переменных. Можем ли мы достичь такой же экономии для расчета процессов? Карл Хьюитт со своей актерской моделью давно ответил на этот вызов; он объявил, что значение, оператор над значениями и процесс должны быть одним и тем же: субъектом.

Эта цель произвела на меня впечатление, потому что она подразумевает однородность и полноту выражения ... Но это было задолго до того, как я смог увидеть, как достичь цели в терминах алгебраического исчисления ...

Итак, в духе Хьюитта, наш первый шаг состоит в том, чтобы требовать, чтобы все вещи, обозначаемые терминами или доступные по именам - значения, регистры, операторы, процессы, объекты, - все были одного вида; все они должны быть процессами.

Практика [ править ]

Модель актера оказала большое влияние на коммерческую практику. Например, Twitter использовал актеров для масштабируемости. [24] Кроме того, Microsoft использовала модель акторов при разработке своей библиотеки асинхронных агентов. [25] Есть много других библиотек акторов, перечисленных в разделе «Библиотеки и фреймворки» ниже.

Решенные проблемы [ править ]

Согласно Хьюитту [2006], модель акторов решает проблемы в компьютерной и коммуникационной архитектуре, языках параллельного программирования и веб-сервисах, включая следующие:

  • Масштабируемость : проблема увеличения параллелизма как локально, так и нелокально.
  • Прозрачность : преодоление пропасти между локальным и нелокальным параллелизмом. Прозрачность в настоящее время является спорным вопросом. Некоторые исследователи [ кто? ] выступали за строгое разделение локального параллелизма с использованием языков параллельного программирования (например, Java и C # ) от нелокального параллелизма с использованием SOAP для веб-служб . Строгое разделение приводит к отсутствию прозрачности, что вызывает проблемы, когда желательно / необходимо переключаться между локальным и нелокальным доступом к веб-службам (см. Распределенные вычисления ).
  • Несогласованность : несогласованность является нормой, потому что все очень большие системы знаний о взаимодействиях с информационными системами человека непоследовательны. Это несоответствие распространяется на документацию и спецификации очень больших систем (например, программное обеспечение Microsoft Windows и т. Д.), Которые внутренне несовместимы.

Многие идеи, представленные в модели акторов , теперь также находят применение в многоагентных системах по тем же причинам [Hewitt 2006b 2007b]. Ключевое отличие состоит в том, что системы агентов (в большинстве определений) накладывают дополнительные ограничения на участников, обычно требуя, чтобы они использовали обязательства и цели.

Программирование с актерами [ править ]

В ряде различных языков программирования используется модель акторов или ее разновидности. Эти языки включают:

Языки программирования ранних актеров [ править ]

  • Акт 1, 2 и 3 [26] [27]
  • Acttalk [28]
  • Ани [29]
  • Кантор [30]
  • Розетка [31]

Более поздние языки программирования актеров [ править ]

  • ABCL
  • AmbientTalk [32]
  • Аксум [33]
  • CAL Актерский язык
  • D
  • Дротик
  • E
  • Эликсир
  • Erlang
  • Фантом
  • Гумус [34]
  • Ио
  • LFE
  • Encore [35]
  • Пони [36] [37]
  • Проект Птолемея
  • П [38]
  • П # [39]
  • Язык моделирования Ребека
  • Reia
  • САЛЬСА [40]
  • Скала [41] [42]
  • TNSDL

Актерские библиотеки и фреймворки [ править ]

Также были реализованы библиотеки или структуры акторов, позволяющие программировать в стиле акторов на языках, в которых нет встроенных акторов. Вот некоторые из этих фреймворков:

См. Также [ править ]

  • Поток данных
  • Гордон Паск
  • Автомат ввода / вывода
  • Метафора научного сообщества

Ссылки [ править ]

  1. ^ Хьюитт, Карл ; Епископ Петр; Стейгер, Ричард (1973). «Универсальный модульный актерский формализм для искусственного интеллекта». IJCAI. Cite journal requires |journal= (help)
  2. ^ a b c d Уильям Клингер (июнь 1981 г.). «Основы актерской семантики». Докторская диссертация по математике. Массачусетский технологический институт. ЛВП : 1721,1 / 6935 . Cite journal requires |journal= (help)
  3. ^ a b Ирен Грейф (август 1975 г.). «Семантика взаимодействующих параллельных процессов». Докторская диссертация EECS. Массачусетский технологический институт. Cite journal requires |journal= (help)
  4. ^ а б Генри Бейкер ; Карл Хьюитт (август 1977 г.). «Законы взаимодействия параллельных процессов». ИФИП. Cite journal requires |journal= (help)
  5. ^ "Законы для взаимодействия параллельных процессов" (PDF) . 10 мая 1977 г.
  6. ^ a b c Гуль Ага (1986). «Актеры: модель параллельных вычислений в распределенных системах». Докторская диссертация. MIT Press. ЛВП : 1721,1 / 6952 . Cite journal requires |journal= (help)
  7. ^ "Дом" . Osl.cs.uiuc.edu. Архивировано из оригинала на 2013-02-22 . Проверено 2 декабря 2012 .
  8. ^ Карл Хьюитт. Просмотр структур управления как шаблонов передачи сообщений Журнал искусственного интеллекта. Июнь 1977 г.
  9. ^ а б Гуль Ага; Ян Мейсон; Скотт Смит; Кэролайн Талкотт (январь 1993 г.). «Основа для вычисления актеров». Журнал функционального программирования .
  10. ^ Карл Хьюитт (2006-04-27). «Что такое обязательства? Физические, организационные и социальные» (PDF) . МОНЕТА @ AAMAS. Cite journal requires |journal= (help)
  11. ^ Мауро Гаспари; Джанлуиджи Заваттаро (май 1997 г.). «Алгебра актеров» (PDF) . Формальные методы для открытых объектно-ориентированных распределенных систем . Технический отчет UBLCS-97-4. Болонский университет. С. 3–18. DOI : 10.1007 / 978-0-387-35562-7_2 . ISBN  978-1-4757-5266-3.
  12. ^ М. Гаспари; Дж. Заваттаро (1999). «Алгебра актеров». Формальные методы для открытых объектно-ориентированных систем. Cite journal requires |journal= (help)
  13. ^ Гул Ага ; Прасанна Тати (2004). «Алгебраическая теория актеров и ее приложение к простому объектно-ориентированному языку» (PDF) . От OO до FM (Dahl Festschrift) LNCS 2635. Архивировано 20 апреля 2004 г. из оригинального (PDF) . Cite journal requires |journal= (help)
  14. ^ Джон Дарлингтон; Ю. К. Го (1994). «Формализация актеров в линейной логике». Международная конференция по объектно-ориентированным информационным системам. Cite journal requires |journal= (help)
  15. ^ Хансен, Пер Бринч (2002). Истоки параллельного программирования: от семафоров до удаленных вызовов процедур . Springer. ISBN 978-0-387-95401-1.
  16. ^ Хансен, Пер Бринч (1996). «Мониторы и параллельный Паскаль: личная история». Сообщения ACM : 121–172.
  17. ^ Хоар, Тони (октябрь 1974). «Мониторы: концепция структурирования операционной системы». Коммуникации ACM . 17 (10): 549–557. DOI : 10.1145 / 355620.361161 . S2CID 1005769 . 
  18. Хансен, Пер Бринч (июль 1973 г.). Принципы операционной системы . Прентис-Холл.
  19. ^ a b Хьюитт, Карл (2012). «Что такое вычисление? Модель актера против модели Тьюринга». В Зениле, Гектор (ред.). Вычислимая Вселенная: понимание вычислений и изучение природы как вычислений. Посвящается памяти Алана М. Тьюринга к 100-летию со дня его рождения . Мировая научная издательская компания.
  20. ^ Фредерик Кнабе. Распределенный протокол для связи на основе каналов с Choice PARLE 1992 .
  21. ^ Робин Милнер. Процессы: математическая модель вычислительных агентов в логическом коллоквиуме 1973.
  22. CAR Hoare. Связь последовательных процессов CACM. Август 1978 г.
  23. ^ Милнер, Робин (1993). «Элементы взаимодействия» . Коммуникации ACM . 36 : 78–89. DOI : 10.1145 / 151233.151240 .
  24. ^ «Как Twitter масштабируется« Блог Waiming Mok » . Waimingmok.wordpress.com. 2009-06-27 . Проверено 2 декабря 2012 .
  25. ^ « Программирование на основе актеров с библиотекой асинхронных агентов » MSDN, сентябрь 2010 г.
  26. Генри Либерман (июнь 1981 г.). «Превью первого акта». Памятка MIT AI 625. hdl : 1721.1 / 6350 . Cite journal requires |journal= (help)
  27. Генри Либерман (июнь 1981 г.). «Думать о множестве вещей одновременно, не запутавшись: параллелизм в действии 1». Памятка MIT AI 626. hdl : 1721.1 / 6351 . Cite journal requires |journal= (help)
  28. ^ Жан-Пьер Брио. Acttalk: Фреймворк для объектно-ориентированного параллельного программирования, разработка и опыт 2-й французско-японский семинар. 1999 г.
  29. ^ Кен Кан. Вычислительная теория анимации MIT EECS Докторская диссертация. Август 1979 г.
  30. ^ Уильям Атхас и Нанетт Боден Кантор: Система программирования актеров для научных вычислений в трудах семинара NSF по объектно-ориентированному параллельному программированию. 1988. Специальный выпуск уведомлений SIGPLAN.
  31. ^ Даррелл Вулк. Разработка агентов InfoSleuth с использованием Rosette: актерский язык Труды семинара CIKM '95 по интеллектуальным информационным агентам. 1995 г.
  32. ^ Dedecker J., Van Cutsem T., Mostinckx S., D'Hondt T., De Meuter W. Окружающее программирование в AmbientTalk. В «Протоколах 20-й Европейской конференции по объектно-ориентированному программированию (ECOOP)», Дэйв Томас (ред.), Lecture Notes in Computer Science Vol. 4067, стр. 230-254, Springer-Verlag. », 2006 г.
  33. ^ Дэррил К. Тафт (2009-04-17). «Microsoft готовит новый язык параллельного программирования» . Eweek.com . Проверено 2 декабря 2012 .
  34. ^ "Хумус" . Dalnefre.com . Проверено 2 декабря 2012 .
  35. ^ Брандауэр, Стефан; и другие. (2015). «Параллельные объекты для многоядерных процессоров: взгляд на бис на параллельном языке». Формальные методы многоядерного программирования . Издательство Springer International: 1–56.
  36. ^ "Язык пони" .
  37. ^ Клебш, Сильван; Дроссопулу, София; Благословение, Себастьян; Макнил, Энди (2015). «Запретить возможности безопасным и быстрым актерам». Материалы 5-го международного семинара по программированию на основе акторов, агентов и децентрализованного управления - AGERE! 2015 . С. 1–12. DOI : 10.1145 / 2824815.2824816 . ISBN 9781450339018. S2CID  415745 . Авторы: Сильван Клебш, София Дроссопулу, Себастьян Блессинг, Энди Макнил
  38. ^ "Язык P" . 2019-03-08.
  39. ^ "Язык P #" . 2019-03-12.
  40. Карлос Варела и Гул Ага (2001). «Программирование динамически реконфигурируемых открытых систем с помощью SALSA». Уведомления ACM SIGPLAN. OOPSLA'2001 Интригующие технологические материалы . Труды . 36 .
  41. ^ Филипп Галлер и Мартин Одерский (сентябрь 2006 г.). «Событийное программирование без инверсии управления» (PDF) . Proc. JMLC 2006. Cite journal requires |journal= (help)
  42. Филипп Галлер и Мартин Одерский (январь 2007 г.). «Актеры, объединяющие потоки и события» (PDF) . Технический отчет LAMP 2007. Архивировано из оригинального (PDF) 07.06.2011 . Проверено 10 декабря 2007 . Cite journal requires |journal= (help)
  43. ^ "acteur - 0.9.1 · Дэвид Боне · Crates.io" . crates.io . Проверено 16 апреля 2020 .
  44. ^ Булут, Махмут (2019-12-15). «Бастион на Crates.io» . Crates.io . Проверено 15 декабря 2019 .
  45. ^ "actix - 0.10.0 · Роб Эде · Crates.io" . crates.io . Проверено 28 февраля 2021 .
  46. ^ "Релизы · zakgof / actr · GitHub" . Github.com . Проверено 16 апреля 2019 .
  47. ^ "Akka 2.5.23 Выпущена · Akka" . Акка. 2019-05-21 . Проверено 3 июня 2019 .
  48. ^ Akka.NET v1.4.10 Стабильная версия GitHub - akkadotnet / akka.net: Порт акторов Akka для .NET. , Akka.NET, 2020-10-01 , получено 2020-10-01
  49. ^ Шринивасан, Шрирам; Алан Майкрофт (2008). «Килим: актеры с изолированной типизацией для Java» (PDF) . Европейская конференция по объектно-ориентированному программированию ECOOP 2008 . Кипр . Проверено 25 февраля 2016 .
  50. ^ "Выпуски · kilim / kilim · GitHub" . Github.com . Проверено 3 июня 2019 .
  51. ^ "История фиксации · stevedekorte / ActorKit · GitHub" . Github.com . Проверено 25 февраля 2016 .
  52. ^ «История фиксации · распределенный / распределенный процесс haskell · GitHub» . Github.com . Проверено 2 декабря 2012 .
  53. ^ «Выпуски · CloudI / CloudI · GitHub» . Github.com . Проверено 3 июня 2019 .
  54. ^ «Теги · GNOME / беспорядок · GitLab» . gitlab.gnome.org . Проверено 3 июня 2019 .
  55. ^ "Релизы · ncthbrt / nact · GitHub" . Проверено 3 июня 2019 .
  56. ^ «Изменения - retlang - Параллелизм на основе сообщений в .NET - Хостинг проектов Google» . Проверено 25 февраля 2016 .
  57. ^ «jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - параллелизм на основе сообщений для Java - хостинг проектов Google» . 2012-02-14 . Проверено 25 февраля 2016 .
  58. ^ "Выпуски GPars" . GitHub . Проверено 25 февраля 2016 .
  59. ^ "Релизы · oosmos / oosmos · GitHub" . GitHub . Проверено 3 июня 2019 .
  60. ^ «Дизайн Pulsar и актеры» . Архивировано из оригинала на 2015-07-04.
  61. ^ "Документация Pulsar" . Архивировано из оригинала на 2013-07-26.
  62. ^ «Изменения - документация Pykka 2.0.0» . pykka.org . Проверено 3 июня 2019 .
  63. ^ "Терон - Эштон Мейсон" . Проверено 29 августа 2018 .
  64. ^ "Терон - выпущена версия 6.00.02" . Theron-library.com. Архивировано из оригинала на 2016-03-16 . Проверено 25 февраля 2016 .
  65. ^ "Терон" . Theron-library.com. Архивировано из оригинала на 2016-03-04 . Проверено 25 февраля 2016 .
  66. ^ "Релизы · puniverse / quasar · GitHub" . Проверено 3 июня 2019 .
  67. ^ «Изменения - Актер-cpp - Реализация модели актора для C ++ - Хостинг проектов Google» . Проверено 2 декабря 2012 .
  68. ^ "История фиксации · s4 / s4 · Apache" . apache.org. Архивировано из оригинала на 2016-03-06 . Проверено 16 января 2016 .
  69. ^ "Релизы · структура-актер / структура-актер · GitHub" . Github.com . Проверено 7 марта 2020 .
  70. ^ "celluloid | RubyGems.org | хост вашего сообщества" . RubyGems.org . Проверено 3 июня 2019 .
  71. ^ «Сообщество: Actor Framework, редакция LV 2011 (версия 3.0.7)» . Decibel.ni.com. 2011-09-23 . Проверено 25 февраля 2016 .
  72. ^ "Релизы · орбита / орбита · GitHub" . GitHub . Проверено 3 июня 2019 .
  73. ^ «QP Real-Time Embedded Frameworks & Tools - Browse Files at» . Sourceforge.net . Проверено 3 июня 2019 .
  74. ^ "Релизы · Stiffstream / sobjectizer · GitHub" . GitHub . Проверено 19 июня 2019 .
  75. ^ "Релизы · basiliscos / cpp-rotor · GitHub" . GitHub . Проверено 10 октября 2020 .
  76. ^ "Релизы · dotnet / orleans · GitHub" . GitHub . Проверено 3 июня 2019 .
  77. ^ "Функциональные выпуски Java" . GitHub . Проверено 23 августа 2018 .

Дальнейшее чтение [ править ]

  • Гуль Ага. Актеры: Модель параллельных вычислений в распределенных системах . MIT Press 1985.
  • Пол Баран. О распределенных сетях связи Транзакции IEEE в системах связи . Март 1964 г.
  • Уильям А. Вудс. Грамматики переходной сети для анализа естественного языка CACM. 1970 г.
  • Карл Хьюитт. Процедурное внедрение знаний в Planner IJCAI 1971.
  • GM Биртвистл, Оле-Йохан Даль , Б. Мирхауг и Кристен Найгаард . SIMULA Begin Auerbach Publishers Inc, 1973.
  • Карл Хьюитт и др. Актерская индукция и метаоценка [ постоянная мертвая ссылка ] Запись конференции ACM-симпозиума по принципам языков программирования, январь 1974 г.
  • Карл Хьюитт и др. Https://link.springer.com/chapter/10.1007/3-540-06859-7_147al . [ постоянная мертвая ссылка ] Поведенческая семантика нерекурсивной структуры управления, Материалы Коллоквиума по программированию, апрель 1974 г.
  • Ирен Грейф и Карл Хьюитт. Актерская семантика конференции PLANNER-73 Запись симпозиума ACM по принципам языков программирования. Январь 1975 г.
  • Карл Хьюитт. Как использовать то, что вы знаете IJCAI. Сентябрь 1975 г.
  • Алан Кей и Адель Голдберг. Инструкция по эксплуатации Smalltalk-72 [ постоянная мертвая ссылка ] Xerox PARC Memo SSL-76-6. Май 1976 г.
  • Эдсгер Дейкстра . Дисциплина программирования Прентис Холл. 1976 г.
  • Карл Хьюитт и Генри Бейкер Актеры и непрерывные функционалы Труды Рабочей конференции IFIP по формальному описанию концепций программирования. 1–5 августа 1977 г.
  • Карл Хьюитт и Расс Аткинсон. Синхронизация в акторных системах Материалы 4-го симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования. 1977 г.
  • Карл Хьюитт и Расс Аткинсон. Спецификация и методы проверки сериализаторов Журнал IEEE по разработке программного обеспечения. Январь 1979 г.
  • Кен Кан. Вычислительная теория анимации MIT EECS Докторская диссертация. Август 1979 г.
  • Карл Хьюитт, Беппе Аттарди и Генри Либерман. Делегация в протоколах передачи сообщений Первой международной конференции по распределенным системам Хантсвилл, Алабама. Октябрь 1979 г.
  • Ниссим Франсез , К.А. Хор, Даниэль Леманн и Виллем-Поль де Ровер . Семантика недетермизма, параллелизма и коммуникации. Журнал компьютерных и системных наук. Декабрь 1979 г.
  • Джордж Милн и Робин Милнер . Параллельные процессы и их синтаксис JACM. Апрель 1979 г.
  • Даниэль Терио. Учебник по языку Act-1 MIT AI memo 672. Апрель 1982 г.
  • Даниэль Терио. Проблемы разработки и реализации Акта 2, технический отчет MIT AI 728. Июнь 1983 г.
  • Генри Либерман. Объектно-ориентированный тренажер для пасечной конференции Американской ассоциации искусственного интеллекта, Вашингтон, округ Колумбия, август 1983 г.
  • Карл Хьюитт и Питер де Йонг. Анализ роли описаний и действий в открытых системных материалах Национальной конференции по искусственному интеллекту. Август 1983 г.
  • Карл Хьюитт и Генри Либерман. Проблемы проектирования в параллельной архитектуре для искусственного интеллекта MIT AI memo 750. Nov. 1983.
  • АВТОМОБИЛЬ Хоар . Связь последовательных процессов Прентис Холл. 1985 г.
  • Карл Хьюитт. Проблема открытых систем. Байт. Апрель 1985. Перепечатано в Основе искусственного интеллекта: сборник материалов Cambridge University Press. 1990 г.
  • Карл Мэннинг. Путешественник: актерская обсерватория ECOOP 1987. Также появляется в Lecture Notes in Computer Science , vol. 276.
  • Мультикомпьютеры Уильяма Атаса и Чарльза Зейтца : параллельные компьютеры с передачей сообщений Компьютер IEEE, август 1988 г.
  • Уильям Атхас и Нанетт Боден Кантор: Система программирования актеров для научных вычислений в материалах семинара NSF по объектно-ориентированному параллельному программированию. 1988. Специальный выпуск уведомлений SIGPLAN.
  • Жан-Пьер Брио. От объектов к актерам: исследование ограниченного симбиоза в Smalltalk-80 Rapport de Recherche 88-58, RXF-LITP, Париж, Франция, сентябрь 1988 г.
  • Уильям Далли и Уиллс Д. Универсальные механизмы параллелизма PARLE 1989.
  • В. Хорват, А. Чиен и В. Далли. Опыт работы с CST: программирование и внедрение PLDI. 1989 г.
  • Карл Хьюитт. К семантике открытых информационных систем Труды 10-го международного семинара по распределенному искусственному интеллекту. 23–27 октября 1990 г. Бандера, Техас.
  • Акинори Ёнэдзава, под ред. ABCL: объектно-ориентированная параллельная система MIT Press. 1990 г.
  • К. Кан и Виджай А. Сарасват, « Актеры как частный случай параллельного (логического) программирования », в SIGPLAN Notices , октябрь 1990 г. Описывает Януса .
  • Карл Хьюитт. Семантика открытых информационных систем. Журнал искусственного интеллекта. Январь 1991 г.
  • Карл Хьюитт и Джефф Инман. DAI Betwixt and Between: от «интеллектуальных агентов» до открытых систем. Транзакции IEEE о системах, человеке и кибернетике. Ноябрь / Дек. 1991 г.
  • Карл Хьюитт и Гул Ага. Языки с оговорками Сторожевого Рога: являются ли они дедуктивными и логическими? Международная конференция по компьютерным системам пятого поколения, Омша, 1988 г., Токио. Также в искусственном интеллекте в Массачусетском технологическом институте , Vol. 2. MIT Press 1991.
  • Уильям Далли и др. Процессор, управляемый сообщениями: мультикомпьютерный узел обработки с эффективными механизмами IEEE Micro . Апрель 1992 г.
  • С. Мирияла, Г. Ага, Ю. Сами. Визуализация программ-субъектов с использованием сетей перехода предикатов Journal of Visual Programming. 1992 г.
  • Карл Хьюитт и Карл Мэннинг. Архитектура переговоров для крупномасштабного антикризисного управления Семинар AAAI-94 по моделям управления конфликтами при совместном разрешении проблем. Сиэтл, Вашингтон. 4 августа 1994 г.
  • Карл Хьюитт и Карл Мэннинг. Синтетические инфраструктуры для межведомственных систем Труды ICMAS '96. Киото, Япония. 8–13 декабря 1996 г.
  • С. Фролунд. Координация распределенных объектов: акторный подход к синхронизации MIT Press. Ноябрь 1996 г.
  • W. Kim. ThAL: система актеров для эффективных и масштабируемых параллельных вычислений. Кандидатская диссертация. Университет Иллинойса в Урбане Шампейн. 1997 г.
  • Жан-Пьер Брио. Acttalk: Фреймворк для объектно-ориентированного параллельного программирования, разработка и опыт 2-й французско-японский семинар. 1999 г.
  • Н. Джамали, П. Тати и Г. Ага. Архитектура на основе акторов для настройки и управления ансамблями агентов IEEE Intelligent Systems. 14 (2). 1999 г.
  • Дон Бокс, Дэвид Энебуск, Гопал Какивая, Эндрю Лэйман, Ноа Мендельсон, Хенрик Нильсен, Сатиш Тэтт, Дэйв Винер. Протокол простого доступа к объектам (SOAP) 1.1 W3C Примечание. Май 2000 г.
  • М. Астлей, Д. Стурман и Г. Ага. Настраиваемое промежуточное ПО для модульного распределенного программного обеспечения CACM. 44 (5) 2001.
  • Эдвард Ли, С. Нойендорфер и М. Виртлин. Актерно-ориентированный дизайн встраиваемых аппаратных и программных систем. Журнал схем, систем и компьютеров . 2002 г.
  • П. Тати, Р. Зиаи и Г. Ага. Теория майского тестирования формальных методов акторов для открытых объектно-ориентированных распределенных систем. Март 2002 г.
  • П. Тати, Р. Зиаи и Г. Ага. Теория майского тестирования для асинхронных вычислений с локальностью и без названия, совпадающей с алгебраической методологией и программными технологиями. Springer Verlag. Сентябрь 2002 г. LNCS 2422.
  • Стивен Нойендорфер. Кандидатская диссертация по актерскому метапрограммированию . Калифорнийский университет в Беркли. Декабрь 2004 г.
  • Карл Хьюитт (2006a) Неоднократная кончина логического программирования и причины его возрождения. Что пошло не так и почему: уроки исследований и приложений искусственного интеллекта. Технический отчет SS-06-08. AAAI Press. Март 2006 г.
  • Карл Хьюитт (2006b) Что такое приверженность? Физическая, организационная и социальная сфера COIN @ AAMAS. 27 апреля 2006 г.b.
  • Карл Хьюитт (2007a) Что такое приверженность? Физический, организационный и социальный (пересмотренный) Пабло Норьега и др. редакторы. LNAI 4386. Springer-Verlag. 2007 г.
  • Карл Хьюитт (2007b) Для крупномасштабных корпоративных вычислений требуется нестратифицированная параконсистентность и отражение COIN @ AAMAS'07.
  • Д. Шаруссе, Т. К. Шмидт, Р. Хисген и М. Валиш. Собственные акторы: масштабируемая программная платформа для распределенных гетерогенных сред в AGERE! '13 Материалы семинара 2013 г. по программированию на основе акторов, агентов и децентрализованного управления.

Внешние ссылки [ править ]

  • Хьюитт, Мейер и Шиперски: модель актера (все, что вы хотели знать, но боялись спросить) Microsoft Channel 9. 9 апреля 2012 года.
  • Функциональная Java - библиотека Java, которая включает реализацию параллельных участников с примерами кода в стандартном стиле Java и Java 7 BGGA.
  • ActorFoundry - Java-библиотека для программирования актеров . Знакомый синтаксис Java, файл сборки ant и множество примеров делают входной барьер очень низким.
  • ActiveJava - прототип расширения языка Java для программирования актеров .
  • Акко - актер библиотека базируется в Scala и Java, от Lightbend Inc. .
  • GPars - библиотека параллелизма для Apache Groovy и Java
  • Библиотека асинхронных агентов - библиотека акторов Microsoft для Visual C ++. «Библиотека агентов - это библиотека шаблонов C ++, которая продвигает модель программирования на основе акторов и внутрипроцессную передачу сообщений для задач крупномасштабного потока данных и конвейерной обработки».
  • ActorThread в C ++ 11 - базовый шаблон, отражающий суть модели актора поверх голых потоков в стандарте C ++ 11