Como o modelo do ator é usado?

18

Eu li um pouco sobre o modelo de ator, mas realmente não entendo como usar atores em uma situação do mundo real - como modelar um problema com eles.

Alguém pode me explicar? Um exemplo simples ou links para exemplos seriam muito apreciados.

Pnutus
fonte
Ou você quer dizer o modelo do ator ?
Aug2
Eu suspeito que você quer dizer agentes, não atores. Em caso afirmativo, consulte esta entrada da wikipedia: en.wikipedia.org/wiki/Software_agent
DwB 08/08/11
1
Eles estrelam Lanterna Verde e Planeta dos Macacos para entreter os geeks em /. Por sua vez, os geeks em /. entreter o resto de nós.
Job
Quero dizer o modelo do ator, e atualizei meu post para esclarecer.
Pnutus

Respostas:

21

Atores, no sentido de ações de modelagem, com mensagens, etc, é uma maneira de modelar software que fornece alguns itens úteis ...

  1. Os atores podem viver em um único encadeamento, permitindo que operações não-seguras / não simultâneas ocorram sem muita magia de bloqueio. Um ator responderá às mensagens em sua caixa de entrada. Quando você deseja que ele processe um comando, envie uma mensagem e ele cuidará deles na ordem em que são recebidos. Assim como uma fila normal. O Thread Safe é ótimo aqui, e eu uso isso em vários projetos de código aberto nos quais trabalho.

  2. Em alguns idiomas, Scala, por exemplo, é fácil transformar código baseado em ator em um único processo em um sistema distribuído, separando os atores e transformando os canais que eles se comunicam em canais remotos. Isso muda entre as implementações sobre como é fácil, mas é um recurso incrível.

  3. Ajuda a focar em eventos baseados em tarefas, em vez de eventos CRUD. O CRUD é simples, mas é como interagir com um arquivo. Se podemos fornecer mais valor do que o software que produzimos, por que estamos fazendo isso? Amarrar várias ações a um único comando "Atualizar" em um sistema baseado em tarefas é mais útil do que apenas salvar no banco de dados. Isso também entra em coisas como o CQRS.

Travis
fonte
Obrigado pela sua resposta e links úteis. Em qual idioma você recomendaria começar a procurar para ter uma idéia melhor dos atores?
Pnutus
1
Eu acho que depende de quais idiomas você se sente confortável. O Scala pode ter algumas das melhores documentações sobre os atores, uma vez que são um conceito de linguagem. Erlang é incrível para mensagens em geral, porém, todo o idioma é baseado nesse conceito.
Travis
Vou dar uma olhada em Scala e Erlang. Encontrado este guia de iniciante para Erlang, vou começar por aí. Obrigado!
Pnutus
+1: muito interessante. Você sabe se existe alguma biblioteca C ++ que implemente atores remotos? Eu ficaria feliz em usar o Scala, mas meu projeto está em C ++.
Giorgio
1
Considere esta implementação do modelo de ator C ++: actor-framework.org
Chen OT
4

A resposta de Travis é sólida. Quando você começa a falar sobre simultaneidade, está tentando resolver problemas de recursos. A simultaneidade com threads e bloqueios é muito fácil de fazer de errado. O modelo de ator ajuda a forçar você a programar partes simultâneas do seu código como pepitas independentes que podem ser executadas em paralelo e sem depender de outro trecho de código. Você está tentando evitar maldade, como condições de corrida e impasses.

Os atores são como você e eu nessa conversa. Você simplesmente não pode alcançar meu cérebro e escolher o que estou digitando. Você me passou uma mensagem dizendo "Por que existimos?" Sentei-me e triturei alguns números e enviei uma resposta "Eu penso, logo existo". Você não podia dizer o que eu estava fazendo na minha própria fatia do planeta Terra. O único contato que você tem comigo é através das mensagens que passamos para frente e para trás.

EDITAR:

Você não disse em quais idiomas se sente confortável, mas veja se há uma implementação de ator em seu idioma. Talvez o mais simples sejam algumas das bibliotecas de atores em python. Mas provavelmente o melhor para aprender seria Erlang. A linguagem é um pouco difícil, mas uma vez que você supera as nuances, é uma boa linguagem.

M15K
fonte
Não tenho certeza se a edição do mosquito é direcionada para mim, mas minha arma de escolha costuma ser Haskell. Erlang é definitivamente uma boa linguagem. Tradicionalmente, Haskell conta com CSPs para simultaneidade, mas existem algumas implementações de atores por aí.
M15K
-2

Os atores são um elemento dos diagramas de casos de uso que representam qualquer entidade externa (usuário, sistema externo etc.) que pode atuar em um sistema. Qualquer caso de uso básico conterá atores - basta pesquisar no Google "caso de uso" para vários exemplos.

afeygin
fonte
6
Não são os chamados bonequinhos ?
pillmuncher
1
Eu não estava claro e você não entendeu. Eu estava falando sobre o modelo de ator.
Pnutus