Je l'ai vu mentionné à plusieurs endroits dans des contextes comme le modèle d'acteur d'Erlang, les acteurs groovy, le modèle d'acteur Scala, etc. À quoi cela fait-il référence?Qu'est-ce qu'un modèle d'acteur dans le contexte d'un langage de programmation?
Répondre
Je pense que Wikipedia résume le mieux:
Le modèle de l'acteur adopte la philosophie que tout est un acteur. Ceci est similaire au tout est une philosophie d'objet utilisée par certains langages de programmation orientés objet, mais diffère en ce que le logiciel orienté objet est typiquement exécuté séquentiellement, alors que le modèle Actor est intrinsèquement concurrent. [snip] Le modèle d'acteur concerne la sémantique du passage de message.
Il ya quelques temps, j'ai écrit this blog post qui explique les concepts de base du modèle et construit une implémentation de base avec JavaScript. Du poste:
Dans le modèle de l'acteur, un acteur est le fondement sur lequel vous construisez la structure de votre application, il a l'état interne invisible au monde extérieur et interagit avec d'autres acteurs par le biais de messages asynchrones.
Si cela vous ressemble beaucoup comme la programmation orientée objet (OOP), vous avez raison. Le modèle d'acteur peut être considéré comme un POO avec un traitement spécial pour les messages: ils sont délivrés de manière asynchrone et exécutés de manière synchrone par le récepteur.
Chaque acteur est identifié avec une adresse unique par laquelle vous lui envoyez des messages. Lorsqu'un message est traité, il est comparé au comportement actuel de l'acteur; qui n'est rien de plus qu'une fonction qui définit les actions à entreprendre en réaction au message. En réponse à un message, un acteur peut:
- Créer plus d'acteurs.
- Envoyer des messages à d'autres acteurs.
- Désigner l'état interne pour gérer le message suivant.