Яка різниця між процесами / повідомленнями в Erlang та об'єктами / повідомленнями в Smalltalk?


12

Я намагаюся зрозуміти різницю між об'єктами / повідомленнями в Smalltalk та процесами / повідомленнями в Erlang . Я прочитав наступний пост по темі .

Наскільки я розумію, у Smalltalk все є об'єктом , і все має однакову абстракцію "об'єкт / повідомлення" - навіть число 1є об'єктом, до якого можна дійти лише при передачі повідомлення. Чи 1є процес в Ерланг / Еліксир? Чи все в Erlang є відповіддю на парадигму повідомлення / програми? Чи можете ви надіслати повідомлення на номер в Erlang?

Дуже дякую.


Ціле число 1 не є процесом, тому ви не можете надіслати йому повідомлення. Ви можете загорнути стан цілого числа у повторюваний процес і надіслати повідомлення цього процесу - наприклад, інструкцію щодо збільшення або зменшення його значення. Але потім знову це не буде корисним. 1. Прокрутіть униз до прикладу Elixir, тут dantswain.herokuapp.com/blog/2015/01/06/…
GavinBrelstaff

дякую за відповідь!
Повністюфункціональний

Відповіді:


18

Процеси в Ерланге та Об'єкти в Малталк - це дійсно те саме.

На перший погляд, це не дуже дивно: Ерланг - мова акторської моделі . Модель актора була придумана Карлом Хьюїттом, який спирався на модель оцінювання, керовану повідомленнями, на модель оцінки Smalltalk, орієнтовану на повідомлення. (Дійсно, актори та об'єкти - це одне і те ж; вони відрізняються лише деякими деталями.) Алан Кей, у свою чергу, вплинув на ПЛАНАЛА Карла Хьюітта, коли він сконструював Smalltalk.

Отже, між акторами та об’єктами існує тісний взаємозв'язок, і тому не слід дивуватися, що "Ероланґеві процеси" та "Об'єкти малих розмов" настільки схожі.

За винятком одного: дизайнери Ерланг не знали про Акторську модель !!! Про це вони дізналися лише пізніше, особливо, коли Джо Армстронг написав докторську дисертацію під керівництвом Сейфа Хариді (співавтор остаточної книги про програмування парадигм) наприкінці 1990-х.

Джо Армстронг написав статтю, в якій рішуче виступав проти ОО ( Чому OO Sucks ), але згодом передумав, зрозумівши, що Ерланг насправді дуже об'єктно орієнтований. Насправді він навіть зайшов так далеко, що стверджував, що Ерланг - це єдиний об'єктно-орієнтований в цьому інтерв'ю Джо Армстронг та Ральф Джонсон .

Це цікавий випадок того, що еволюційні біологи назвали б конвергентною еволюцією , тобто два неспоріднених види, що розвиваються, подібні у відповідь на подібні зовнішні тиски.

Є ще багато відносин між Ерланг та Малталк, хоча:

Erlang почався як розширення одночасності Prolog (і навіть коли Erlang став власною окремою мовою, перші реалізації були написані в Prolog) і донині сильно укорінений у Prolog. Пролог сильно впливає на ПЛАНАЛА Карла Хьюітта.

На Smalltalk також сильно вплинуло те, що згодом стане ARPANet (і навіть пізніше Інтернет); Erlang був розроблений для мережевих систем.

Однак однією з важливих відмінностей між Ерланом та Малимталком є ​​те, що не все є Процесом. 1це число, а не процес. Ви не можете надіслати повідомлення на номер.

Є кілька "шарів" Erlang:

  • Функціональний Ерланг : в основному типова, динамічно типізована функціональна мова з деякими "дивацтвами", успадкованими від Prolog, наприклад, уніфікація.
  • Паралельний Erlang : функціональний Erlang + процеси та повідомлення.
  • Розподілений Erlang : паралельні Erlang + віддалені процеси.
  • Erleng-Tolerant Erlang : Поширений Erlang + певні шаблони дизайну, кодифіковані в бібліотеках OTP, наприклад, дерева наглядачів та gen_server.

Система "Толерантність до відмов", написана в Erlang / OTP, зазвичай буде схожа на те, що ми можемо визнати "Об'єктно-орієнтованим". Але нутрощі цих об'єктів часто реалізовуються у більш функціональному, ніж об'єктно-орієнтованому стилі.

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

Я трохи про це писав в іншій моїй відповіді .


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