Чи справді Ерланг мова актора моделі?


18

Я читав цю статтю:

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

І в ньому зазначається, що:

... в акторській моделі навіть ціле число представлене як актор ...

Вікіпедія підтверджує:

Модель Актора переймає філософію, що все - це актор.

У Erlang є багато типів даних, і ці типи не є дійовими особами, наскільки я можу сказати.

Чи не означає це, що Ерланг не є моделлю акторської моделі таким чином, як деякі люди кажуть, що, наприклад, Java не є функціональною мовою лише тому, що їй не вистачає певних функціональних функцій програмування?

PS: в розширенні, це означає, що Акка, безумовно, не є акторською моделлю, тому що, крім типів даних, що не належать акторам, що надходять з мови перебування, це дозволяє навіть успадковувати акторів розширювати їх поведінку через засоби хосту.

Відповіді:


39

Хоча модель актора старша за Ерланг, дизайнери Ерланг дізналися про Акторську модель лише після того, як розробили Ерланг, тому слід очікувати деяких відмінностей.

Хоча вони йшли паралельними шляхами еволюції: модель актора була створена Карлом Хьюіттом на основі семантики повідомлення, що передає Smalltalk. Алан Кей, у свою чергу, базував семантику передачі повідомлень Smalltalk на цільовій оцінці PLANNER, яку розробив… Карл Хьюїтт.

PLANNER був попередником Prolog. Ерланг спочатку не мав бути мовою, скоріше він почався як бібліотека для розподіленого програмування про відмов, що спричиняє відмову в Пролозі, а згодом перетворився на діалект Пролога, перш ніж він став його власною мовою, і донині сильно впливає на Пролог (плюс, оригінальний перекладач Ерланг був написаний у Prolog).

Отже, подібність між Процесами в Ерланге, Об'єктами в ОО та Акторами в акторській моделі далеко не випадкові.

Ерланг - мова з декількома шарами, кожен з яких є набором нижніх шарів. Найменший шар - функціональний ерланг . Це стандартна функціональна мова з деякими доповненнями, успадкованими від Prolog, такими як об'єднання замість прив'язки / рівності. Якщо додати до цього Процеси та Повідомлення , ми отримаємо одночасний Erlang . Відкиньте віддалені процеси, і ви отримаєте розподілений Erlang . Тепер додайте деякі бібліотеки та шаблони дизайну з OTP, і у вас є стійкий до відмов Erlang.

Процеси - актори. (Вони також є об'єктами.) Внутрішня частина Процесів функціональна, а не акторська. Структура великої відмовної системи Ерланг, побудована за допомогою інструментів та зразків OTP, часто дуже орієнтована на об'єкти.

Отже, це залежить від того, яку шкалу ви дивитесь.

У типово великій системі Erlang у вас є об'єктно-орієнтована архітектура з акторами, що передають повідомлення, реалізованими за допомогою функціонального програмування. Те, що викликає OTP server, тісно пов'язане з об'єктом, serverскладається з процесів (які є суб'єктами), процеси використовують функції внутрішньо.

Взагалі, я не вірю, що будь-яка чиста мова актора ніколи не залишала досліджень. Чорт забираю, я навіть не знаю, чи була навіть реалізована плазма Карла Хьюітта, оригінальна мова актора.


4
Ерланг також був розроблений людьми, які мають вирішити проблему, і коли ти в такому положенні, концептуальна чистота часто жертвується біля вівтаря практичності.
Blrfl

Цікаво, що проблему, яку вони намагалися вирішити (надійність, реплікація, надмірність, ...) тієї самої природи, яку намагалися вирішити, коли вона розвивалася клітинами. Алан Кей прислухався до мікробіології та чітко моделював ОО на біологічних клітинах. Ще одна паралель.
Йорг W Міттаг

1
PLASMA був реалізований у MacLisp. Це була мова, що швидко розвивається.
Джеррі101

1
Дуже сподобалася ця відповідь. Дякую @ JörgWMittag!
Феліксиз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.