Was ist der Unterschied zwischen Prozessen / Nachrichten in Erlang und Objekten / Nachrichten in Smalltalk?

12

Ich versuche, den Unterschied zwischen Objekten / Nachrichten in Smalltalk und Prozessen / Nachrichten in Erlang zu verstehen . Ich habe den folgenden Beitrag zum Thema gelesen .

Soweit ich weiß, ist in Smalltalk alles ein Objekt , und alles hat dieselbe "Objekt / Nachricht" -Abstraktion - sogar die Nummer 1ist ein Objekt, das nur durch Weitergabe von Nachrichten erreicht werden kann. Ist 1ein Prozess in Erlang / Elixir? Ist alles in Erlang eine Antwort auf das Nachrichten- / Programmparadigma? Können Sie eine Nachricht an eine Nummer in Erlang senden?

Vielen Dank.

Voll funktionsfähig
quelle
Eine Ganzzahl 1 ist kein Prozess - Sie können ihr also keine Nachricht senden. Sie können den Status einer Ganzzahl in einen wiederkehrenden Prozess einschließen und diese Prozessnachrichten senden - z. B. eine Anweisung zum Erhöhen oder Verringern ihres Werts. Aber andererseits
Sie
Danke für eine Antwort!
Voll funktionsfähig

Antworten:

18

Prozesse in Erlang und Objekte in Smalltalk sind in der Tat dasselbe.

Auf den ersten Blick ist dies nicht sonderlich überraschend: Erlang ist eine Actor Model- Sprache. Das Akteurmodell wurde von Carl Hewitt erfunden, der das nachrichtengesteuerte Bewertungsmodell auf dem nachrichtengesteuerten Bewertungsmodell von Smalltalk basierte. (Schauspieler und Objekte sind wirklich dasselbe; sie unterscheiden sich nur in einigen Details.) Alan Kay wiederum wurde von Carl Hewitts PLANNER beeinflusst, als er Smalltalk entwarf.

Es besteht also eine enge Beziehung zwischen Akteuren und Objekten, und daher sollte es nicht überraschen, dass Erlangs Prozesse und Smalltalks Objekte so ähnlich sind.

Abgesehen von einer Sache: Die Designer von Erlang wussten nichts über das Actor Model !!! Sie erfuhren erst später davon, insbesondere als Joe Armstrong Ende der 90er Jahre seine Doktorarbeit bei Seif Haridi (Co-Autor des endgültigen Buches über Programmierparadigmen) schrieb.

Joe Armstrong schrieb einen Artikel, in dem er sich entschieden gegen OO aussprach ( Why OO Sucks) ) , aber er änderte später seine Meinung, als er feststellte, dass Erlang tatsächlich sehr objektorientiert ist. Tatsächlich ging er sogar so weit zu behaupten, dass Erlang die einzige objektorientierte Sprache in diesem Interview mit Joe Armstrong und Ralph Johnson ist .

Dies ist ein interessanter Fall dessen, was Evolutionsbiologen nennen würden konvergente Evolution bezeichnen würden , dh zwei nicht verwandte Arten, die sich als Reaktion auf ähnlichen externen Druck ähnlich entwickeln.

Es gibt jedoch immer noch viele Beziehungen zwischen Erlang und Smalltalk:

Erlang begann als Parallelitätserweiterung zu Prolog (und selbst als Erlang seine eigene Sprache wurde, wurden die ersten Implementierungen in Prolog geschrieben) und ist bis heute stark in Prolog verwurzelt. Prolog ist stark von Carl Hewitts PLANNER beeinflusst.

Smalltalk wurde auch stark von dem beeinflusst, was später das ARPANet (und später das Internet) werden sollte. Erlang wurde für vernetzte Systeme entwickelt.

Einer der wichtigen Unterschiede zwischen Erlang und Smalltalk ist jedoch, dass nicht alles ein Prozess ist. 1ist eine Zahl, kein Prozess. Sie können keine Nachricht an eine Nummer senden.

Es gibt mehrere "Schichten" von Erlang:

  • Funktionale Erlang : Eine meist typische, dynamisch typisierte funktionale Sprache mit einigen von Prolog geerbten "Kuriositäten", z. B. Vereinheitlichung.
  • Gleichzeitiger Erlang : Funktionale Erlang + Prozesse und Nachrichten.
  • Verteiltes Erlang : Gleichzeitige Erlang + Remote-Prozesse.
  • Fehlertolerantes Erlang : Verteiltes Erlang + bestimmte Entwurfsmuster, die in den OTP-Bibliotheken codiert sind, z gen_server. B. Supervisor-Bäume und .

Ein in Erlang / OTP geschriebenes fehlertolerantes System sieht normalerweise wie etwas aus, das wir möglicherweise als "objektorientiert" erkennen. Die Innenseiten dieser Objekte werden jedoch häufig funktionaler als objektorientiert implementiert.

Interessanterweise ist der "evolutionäre Druck", unter dem Erlang stand, mit anderen Worten, das Problem, das Erlangs Designer zu lösen versuchten (Zuverlässigkeit, Replikation, Redundanz, ...), derselbe Druck, der zur Evolution von Zellen führte. Alan Kay studierte Mikrobiologie und modellierte OO explizit an biologischen Zellen. Dies ist eine weitere Parallele zwischen Erlang und Smalltalk.

Ich habe ein wenig darüber in einer anderen Antwort von mir geschrieben .

Jörg W Mittag
quelle
Danke, das ist hilfreich!
Voll funktionsfähig