Jaka jest różnica między procesami / wiadomościami w Erlangu a obiektami / wiadomościami w Smalltalk?

12

Próbuję zrozumieć różnicę między obiektami / wiadomościami w Smalltalk a procesami / wiadomościami w Erlang . I przeczytać poniższy post na ten temat .

O ile rozumiem, w Smalltalk wszystko jest przedmiotem i wszystko ma tę samą abstrakcję „obiekt / wiadomość” - nawet liczba 1jest obiektem, do którego można dotrzeć tylko przy przekazywaniu wiadomości. Czy 1proces jest w Erlang / Elixir? Czy wszystko w Erlang jest odpowiedzią na paradygmat wiadomości / programu? Czy możesz wysłać wiadomość na numer w Erlang?

Wielkie dzięki.

W pełni funkcjonalny
źródło
Liczba całkowita 1 nie jest procesem - więc nie możesz wysłać jej wiadomości. Możesz zawinąć stan liczby całkowitej w proces cykliczny i wysłać wiadomości o tym procesie - np. Instrukcję zwiększania lub zmniejszania jego wartości. Ale z drugiej strony nie będzie to już miało wartości 1. Przewiń w dół do przykładu Elixir tutaj dantswain.herokuapp.com/blog/2015/01/06/…
GavinBrelstaff
dziękuję za odpowiedź!
pełni funkcjonalny

Odpowiedzi:

18

Procesy w Erlang i Obiekty w Smalltalk są w istocie tym samym.

Na pierwszy rzut oka nie jest to zaskakujące: Erlang jest językiem aktorskim . Model aktora został wynaleziony przez Carla Hewitta, który oparł model ewaluacyjny oparty na komunikatach na modelu ewaluacyjnym Smalltalk. (Naprawdę, Aktorzy i Przedmioty są tym samym; różnią się tylko niektórymi szczegółami.) Z kolei na Alana Kay wpłynął PLANER Carla Hewitta, kiedy zaprojektował Smalltalk.

Istnieje więc ścisły związek między aktorami i obiektami, dlatego nie powinno dziwić, że procesy Erlanga i obiekty Smalltalk są tak podobne.

Z wyjątkiem jednej rzeczy: projektanci Erlanga nie wiedzieli o modelu aktorskim !!! Dowiedzieli się o tym dopiero później, zwłaszcza gdy pod koniec lat 90. Joe Armstrong napisał pracę doktorską pod kierownictwem Seifa Haridi (współautor ostatecznej książki o programowaniu paradygmatów).

Joe Armstrong napisał artykuł, w którym zdecydowanie opowiadał się przeciwko OO ( Dlaczego OO Sucks ), ale później zmienił zdanie, gdy zdał sobie sprawę, że Erlang jest bardzo zorientowany obiektowo. W rzeczywistości nawet posunął się do stwierdzenia, że ​​Erlang jest jedynym językiem obiektowym w tym wywiadzie dla Joe Armstronga i Ralpha Johnsona .

Jest to interesujący przypadek tego, co biolodzy ewolucyjni nazwaliby ewolucją zbieżną , tj. Dwa niezwiązane gatunki ewoluują, by być podobne w odpowiedzi na podobne naciski zewnętrzne.

Nadal istnieje wiele relacji między Erlang a Smalltalk:

Erlang zaczynał jako rozszerzenie współbieżności z Prologiem (a nawet kiedy Erlang stał się własnym odrębnym językiem, pierwsze implementacje zostały napisane w Prologu) i do dziś jest mocno zakorzeniony w Prologu. Prolog jest pod silnym wpływem PLANERA Carla Hewitta.

Smalltalk był również pod silnym wpływem tego, co później stanie się ARPANet (a nawet później Internet); Erlang został zaprojektowany dla systemów sieciowych.

Jednak jedną z ważnych różnic między Erlangiem a Smalltalk jest to, że nie wszystko jest procesem. 1jest liczbą, a nie procesem. Nie możesz wysłać wiadomości na numer.

Istnieje wiele „warstw” Erlanga:

  • Funkcjonalny Erlang : najczęściej typowy, dynamicznie typowany język funkcjonalny z pewnymi „osobliwościami” odziedziczonymi po Prologu, np. Unifikacja.
  • Współbieżne Erlang : funkcjonalne Erlang + procesy i komunikaty.
  • Rozproszony Erlang : Równoczesne procesy Erlang + zdalne.
  • Erlang odporny na błędy : rozproszony Erlang + niektóre wzorce projektowe skodyfikowane w bibliotekach OTP, np. Drzewa nadzorcze i gen_server.

System odporny na awarie napisany w języku Erlang / OTP zwykle będzie wyglądał jak coś, co możemy rozpoznać jako „obiektowe”. Ale wnętrza tych obiektów często będą implementowane w bardziej funkcjonalnym niż obiektowym stylu.

Co ciekawe, „presja ewolucyjna”, na którą znajdował się Erlang, innymi słowy, problem, który projektanci Erlang próbowali rozwiązać (niezawodność, replikacja, redundancja,…), to ta sama presja, która doprowadziła do ewolucji komórek. Alan Kay zajmował się mikrobiologią i wyraźnie modelował OO na komórkach biologicznych. To kolejna paralela między Erlangiem a Smalltalk.

Trochę o tym napisałem w innej mojej odpowiedzi .

Jörg W Mittag
źródło
Dziękuję, to jest pomocne!
pełni funkcjonalny