Erlang est-il vraiment un langage de modèle d'acteur?


18

Je lisais cet article:

http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/pjm2/

Et il mentionne que:

... dans le modèle de l'acteur, même un entier est représenté comme un acteur ...

Wikipedia confirme:

Le modèle Acteur adopte la philosophie que tout est acteur.

Erlang a de nombreux types de données et ces types ne sont pas des acteurs pour autant que je sache.

Cela ne signifie-t-il pas qu'Erlang n'est pas un langage de modèle d'acteur d'une manière que certains disent que par exemple Java n'est pas un langage fonctionnel juste parce qu'il manque certaines fonctionnalités de programmation fonctionnelle?

PS: par extension, cela signifie qu'Akka n'est certainement pas un modèle d'acteur car en plus des types de données non-acteur provenant du langage hôte, il permet même aux acteurs héritiers d'étendre leur comportement via les fonctionnalités du langage hôte.

Réponses:


39

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 serverest étroitement lié à un objet, les servers 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.


4
Erlang a également été conçu par des personnes ayant un problème à résoudre, et lorsque vous êtes dans cette position, la pureté conceptuelle est souvent sacrifiée sur l'autel de la praticité.
Blrfl

Fait intéressant, le problème qu'ils tentaient de résoudre (fiabilité, réplication, redondance,…) est de la même nature qu'il tentait de résoudre lorsqu'il a fait évoluer des cellules. Alan Kay a étudié la microbiologie et a explicitement modélisé l'OO sur des cellules biologiques. Un autre parallèle.
Jörg W Mittag

1
PLASMA a été implémenté dans MacLisp. C'était un langage de recherche en évolution rapide.
Jerry101

1
Vraiment apprécié cette réponse. Merci @ JörgWMittag!
Felixyz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.