Bien que le modèle d'acteur soit plus ancien qu'Erlang, les concepteurs d'Erlang n'ont appris le modèle d'acteur qu'après avoir conçu Erlang, donc certaines différences sont à prévoir.
Cependant, ils ont suivi des chemins d'évolution parallèles: le modèle d'acteur a été créé par Carl Hewitt sur la base de la sémantique de passage de messages de Smalltalk. Alan Kay, à son tour, avait basé le message passant la sémantique de Smalltalk sur l'évaluation axée sur les objectifs de PLANNER, qui a été conçue par… Carl Hewitt.
PLANNER était le précurseur de Prolog. Erlang n'était à l'origine pas destiné à être un langage, il a plutôt commencé comme une bibliothèque pour la programmation distribuée tolérante aux pannes dans Prolog, et est devenu plus tard un dialecte de Prolog, avant de devenir son propre langage, encore à ce jour fortement influencé par Prolog. (en plus, l'interprète Erlang original a été écrit en Prolog).
Ainsi, les similitudes entre les processus à Erlang, les objets à OO et les acteurs dans le modèle d'acteur sont loin d'être fortuites.
Erlang est une langue à plusieurs couches, chacune étant un sur-ensemble des couches inférieures. La plus petite couche est l'Erlang fonctionnel . Il s'agit d'un langage fonctionnel standard avec quelques ajouts hérités de Prolog, tels que l'unification au lieu de la liaison / l'égalité. Si nous ajoutons des processus et des messages à cela, nous obtenons Erlang simultané . Ajoutez des processus distants et vous obtenez Erlang distribué . Ajoutez maintenant quelques bibliothèques et modèles de conception à partir d'OTP, et vous avez Erlang tolérant aux pannes.
Les processus sont des acteurs. (Ce sont aussi des objets.) L' intérieur des processus est fonctionnel et non basé sur un acteur. La structure d'un grand système Erlang tolérant aux pannes, construit à l'aide des outils et des modèles de l'OTP, est souvent très orientée objet.
Cela dépend donc de l'échelle que vous regardez.
Dans un grand système Erlang typique, vous avez une architecture orientée objet avec des acteurs de passage de messages implémentés à l'aide d'une programmation fonctionnelle. Ce que OTP appelle a server
est étroitement lié à un objet, les server
s sont constitués de processus (qui sont des acteurs), les processus utilisent des fonctions en interne.
En général, je ne crois pas qu'un langage d'acteur pur ait jamais quitté la recherche. Zut, je ne sais même pas si PLASMA Carl Hewitt, l' originale Acteur Langue n'a jamais été même mis en œuvre.