Хотя модель актера старше, чем Erlang, дизайнеры Erlang узнали о модели актера только после того, как разработали Erlang, поэтому следует ожидать некоторых отличий.
Однако они следовали параллельным путям эволюции: модель актера была создана Карлом Хьюиттом на основе семантики передачи сообщений Smalltalk. Алан Кей, в свою очередь, основывал семантику передачи сообщений Smalltalk на целенаправленной оценке PLANNER, которая была разработана ... Карлом Хьюиттом.
ПЛАНЕР был предшественником Пролога. Изначально Erlang не был задуман как язык, скорее он начинался как библиотека для отказоустойчивого распределенного программирования на Прологе, а затем превратился в диалект Пролога, прежде чем стал собственным языком, до сих пор находящимся под сильным влиянием Пролога. (плюс, оригинальный переводчик Erlang был написан на Прологе).
Таким образом, сходство между процессами в Erlang, объектами в OO и актерами в модели акторов далеко не случайно.
Erlang - это язык с несколькими слоями, каждый из которых является надмножеством нижних уровней. Самый маленький слой - Функциональный Эрланг . Это стандартный функциональный язык с некоторыми дополнениями, унаследованными от Prolog, такими как объединение вместо связывания / равенства. Если мы добавим к этому процессы и сообщения , мы получим параллельный Erlang . Добавьте удаленные процессы, и вы получите Distributed Erlang . Теперь добавьте некоторые библиотеки и шаблоны проектирования из OTP, и вы получите отказоустойчивый Erlang.
Процессы являются актерами. (Они также являются объектами.) Внутри процессов функционирует, а не на основе акторов. Структура большой отказоустойчивой системы Erlang, построенной с использованием инструментов и шаблонов OTP, часто очень объектно-ориентирована.
Таким образом, это зависит от того, на какой масштаб вы смотрите.
В типичной большой системе Erlang у вас есть объектно-ориентированная архитектура с субъектами передачи сообщений, реализованными с использованием функционального программирования. То, что OTP называет a server
, тесно связано с объектом, server
s состоят из процессов (которые являются действующими лицами), процессы используют функции внутренне.
В общем, я не верю, что какой-либо чистый язык актеров когда-либо оставлял исследования. Черт возьми, я даже не знаю, был ли когда-либо реализован PLASMA Карла Хьюитта, оригинальный язык актера.