Ist Erlang wirklich eine Darstellersprache?

18

Ich habe diesen Artikel gelesen:

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

Und es erwähnt, dass:

... im Darstellermodell wird sogar eine ganze Zahl als Darsteller dargestellt ...

Wikipedia bestätigt:

Das Actor-Modell folgt der Philosophie, dass alles ein Schauspieler ist.

Erlang hat viele Datentypen und diese Typen sind, soweit ich das beurteilen kann, keine Akteure.

Bedeutet das nicht, dass Erlang in gewisser Weise keine Modellsprache für Schauspieler ist, wie manche sagen, dass Java beispielsweise keine funktionale Sprache ist, nur weil es bestimmte funktionale Programmierfunktionen nicht gibt?

PS: Im weiteren Sinne bedeutet dies, dass Akka definitiv kein Darstellermodell ist, da es neben Nicht-Darstellerdatentypen aus der Host-Sprache sogar die Möglichkeit bietet, das Verhalten von ererbten Darstellern über Einrichtungen der Host-Sprache zu erweitern.

Den
quelle

Antworten:

39

Obwohl das Actor Model älter als Erlang ist, erfuhren die Designer von Erlang erst nach dem Entwurf von Erlang von dem Actor Model, sodass einige Unterschiede zu erwarten sind.

Sie folgten jedoch parallelen Entwicklungspfaden: Das Actor Model wurde von Carl Hewitt basierend auf der Semantik der Nachrichtenübermittlung von Smalltalk erstellt. Alan Kay wiederum hatte die Message-Passing-Semantik von Smalltalk auf die zielgerichtete Bewertung von PLANNER gestützt, die von Carl Hewitt entworfen wurde.

PLANER war der Vorläufer von Prolog. Erlang war ursprünglich nicht als Sprache gedacht, sondern begann als Bibliothek für fehlertolerante verteilte Programmierung in Prolog und entwickelte sich später zu einem Dialekt von Prolog, bevor es zu seiner eigenen Sprache wurde, die bis heute stark von Prolog beeinflusst wurde (Außerdem wurde der ursprüngliche Erlang-Interpreter in Prolog geschrieben).

Die Ähnlichkeiten zwischen Prozessen in Erlang, Objekten in OO und Akteuren im Akteurmodell sind also alles andere als zufällig.

Erlang ist eine Sprache mit mehreren Schichten, von denen jede Obermenge der unteren Schichten ist. Die kleinste Schicht ist Functional Erlang . Dies ist eine Standardfunktionssprache mit einigen Ergänzungen, die von Prolog übernommen wurden, z. B. Vereinheitlichung anstelle von Bindung / Gleichheit. Wenn wir dazu Prozesse und Nachrichten hinzufügen , erhalten wir Concurrent Erlang . Wenn Sie entfernte Prozesse einsetzen, erhalten Sie Distributed Erlang . Fügen Sie nun einige Bibliotheken und Entwurfsmuster aus dem OTP hinzu, und Sie haben fehlertolerantes Erlang.

Prozesse sind Akteure. (Sie sind auch Objekte.) Das Innere von Prozessen ist funktional und nicht akteurbasiert. Die Struktur eines großen fehlertoleranten Erlang-Systems, das unter Verwendung der Werkzeuge und Muster des OTP konstruiert wurde, ist oft sehr objektorientiert.

Es kommt also darauf an, welchen Maßstab Sie betrachten.

In einem typischen großen Erlang-System verfügen Sie über eine objektorientierte Architektur mit Message-Passing-Akteuren, die mithilfe der funktionalen Programmierung implementiert werden. Was OTP a nennt, serverhängt eng mit einem Objekt zusammen, serveres besteht aus Prozessen (die Akteure sind), Prozesse verwenden Funktionen intern.

Im Allgemeinen glaube ich nicht, dass irgendeine reine Darstellersprache jemals die Forschung verlassen hat. Ich weiß nicht einmal, ob Carl Hewitts PLASMA, die ursprüngliche Darstellersprache, jemals implementiert wurde.

Jörg W. Mittag
quelle
4
Erlang wurde auch von Menschen mit einem zu lösenden Problem entworfen. Wenn Sie sich in dieser Position befinden, wird die konzeptionelle Reinheit häufig am Altar der Praktikabilität geopfert.
Blrfl
Interessanterweise war das Problem, das sie zu lösen versuchten (Zuverlässigkeit, Replikation, Redundanz, ...), dasselbe, was sie zu lösen versuchten, als sie Zellen entwickelten. Alan Kay studierte Mikrobiologie und modellierte OO explizit an biologischen Zellen. Eine weitere Parallele.
Jörg W Mittag
1
PLASMA wurde in MacLisp implementiert. Es war eine sich schnell entwickelnde Forschungssprache.
Jerry101
1
Wirklich genossen diese Antwort. Vielen Dank @ JörgWMittag!
Felixyz