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 1
ist ein Objekt, das nur durch Weitergabe von Nachrichten erreicht werden kann. Ist 1
ein 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.
Antworten:
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.
1
ist eine Zahl, kein Prozess. Sie können keine Nachricht an eine Nummer senden.Es gibt mehrere "Schichten" von Erlang:
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 .
quelle