Я дивився на akka нещодавно, і це досить вражаюче. Схоже, він має більшість вбивчих особливостей ерлангу - прозорість розташування, ієрархії нагляду тощо. Чи є якісь функції erlang, яких немає у akka?
Я дивився на akka нещодавно, і це досить вражаюче. Схоже, він має більшість вбивчих особливостей ерлангу - прозорість розташування, ієрархії нагляду тощо. Чи є якісь функції erlang, яких немає у akka?
Відповіді:
Відмова: Я - ОП для Акки
Це ті, хто зверху моєї голови.
З іншого боку, використання Akka означає, що ви можете використовувати Scala, Java, Groovy або JRuby для написання своїх додатків.
У процесах Ерланг гарантовано перемикаються приблизно кожні 1000 скорочень. У таких наївних рамках, як агент Scala / Akka, належить планувальник, поки він не закінчить роботу над отриманням. Мат. Кінець гри. Hasta la vista :) Люди, не витрачайте час на псевдотехнику. Я шокую, що хлопці тут порівнюють Скалу з Ерланг.
Також є багато інших так званих "вбивчих рис", але ось моя порада, не думайте з точки зору особливостей, подумайте про ідіоми, які дозволяють використовувати певну мову. Скала краде "найкращі функції", Ерланг дозволяє / реалізовує вас з правильними ідіомами, щоб надійно будувати системи, з мовою високого рівня, що керується цими правильними ідіомами. Коли ви дізнаєтесь про Ерланг, ви відновлюєте свій розум, свій спосіб мислення про розподілену надійну систему, Ерланг навчає вас і вдосконалює вас. Скала - це ще одна необхідна (ох, вибачте, багатопарадигмальне, смішне слово) мова, яка намагається вкрасти хороші риси з інших мов.
Майже ніхто не згадує про ізоляцію процесу. Без гарантій "ваш потік не може зіпсувати моє сміття", розподіленим системам набагато складніше міркувати. (Вони вже досить складно з процесами Erlang.)
AFAIK (що недалеко, зважаючи на мій обмежений безпосередній досвід роботи з JVM), лише Ерланг насправді отримує процес "ізоляції" на СВМ. Містер Google може дати декілька підказок щодо того, де знайти дослідження Фокса та Кандеї (?) На дослідницьких системах, які використовують техніку "мікрозавантаження" ("обчисленні, орієнтовані на відновлення"). Розробник Erlang читає це дослідження і говорить кілька речей:
Для мене гаряча заміна коду в цілому кластері Erlang без простоїв (наприклад make:all([netload]
:) є однією з особливостей вбивці Erlang.
Але давайте повернемо ваше запитання: що в Акка є, чого у Ерланга немає? Звичайно, ви можете додати десятки розширень і бібліотек (scala, akka, spring, osgi, ...) на Java, щоб спробувати наблизитися до Erlang. Але де справа? Підсумовуючи всі ці розширення набагато складніше, ніж вивчення простої мови Erlang, яка вже протягом двох десятиліть доводить, що вона може виконувати роботу, пропонуючи максимальну масштабованість з нульовим простоєм.
Ймовірно, Erlang краще для більших розподілених систем (слідуючи відповіді vjache), але для звичайного сервера, коли ви просто хочете використовувати всю потужність декількох процесорів, тоді Akka є хорошим вибором - забезпечує хорошу абстракцію, продуктивність та інтеграцію з екосистемою Java.