Embora o modelo de ator seja mais antigo que Erlang, os projetistas de Erlang só aprenderam sobre o modelo de ator depois de projetá-lo, portanto, algumas diferenças são esperadas.
Eles seguiram caminhos paralelos de evolução: o Modelo do Ator foi criado por Carl Hewitt com base na semântica de transmissão de mensagens do Smalltalk. Alan Kay, por sua vez, baseara a semântica de transmissão de mensagens do Smalltalk na avaliação orientada a objetivos do PLANNER, projetada por ... Carl Hewitt.
PLANNER foi o precursor do Prolog. Originalmente, Erlang não pretendia ser uma linguagem, mas começou como uma biblioteca para programação distribuída tolerante a falhas no Prolog, e depois evoluiu para um dialeto do Prolog, antes de se tornar sua própria linguagem, até hoje fortemente influenciada pelo Prolog. (além disso, o intérprete original de Erlang foi escrito em Prolog).
Portanto, as semelhanças entre Processos em Erlang, Objetos no OO e Atores no Modelo do Ator estão longe de ser coincidentes.
Erlang é uma linguagem com várias camadas, cada uma das quais são superconjuntos das camadas inferiores. A menor camada é o Erlang Funcional . Essa é uma linguagem funcional padrão com algumas adições herdadas do Prolog, como unificação em vez de ligação / igualdade. Se adicionarmos Processos e Mensagens a isso, obteremos Erlang Simultâneo . Jogue em processos remotos e você receberá o Distributed Erlang . Agora adicione algumas bibliotecas e padrões de design do OTP e você terá Erlang tolerante a falhas.
Processos são atores. (Eles também são objetos.) O interior dos processos é funcional, não baseado em ator. A estrutura de um grande sistema Erlang tolerante a falhas, construído usando as ferramentas e os padrões do OTP, geralmente é muito orientado a objetos.
Portanto, depende de qual escala você está olhando.
Em um sistema Erlang grande e típico, você tem uma arquitetura orientada a objetos com atores de passagem de mensagens implementados usando programação funcional. O que o OTP chama de server
está intimamente relacionado a um objeto, server
s são compostos de processos (que são atores), os processos usam funções internamente.
Em geral, não acredito que nenhuma linguagem pura de ator tenha saído de pesquisa. Caramba, eu nem sei se o PLASMA de Carl Hewitt, a linguagem do ator original, já foi implementada.