Подтвердить что ты не робот

Почему scala актеры устарели в 2.10?

Я был просто сравнивал различные реализации актера scala, и теперь мне интересно, что могло быть мотивацией для осуждения существующей реализации актера scala в 2.10 и заменить актера по умолчанию на реализацию Akka? Ни руководство по миграции, ни первое объявление не дают никаких объяснение.

В соответствии с этим сравнением два решения были достаточно разными, что сохранение обоих было бы преимуществом. Таким образом, мне интересно, были ли какие-то серьезные проблемы с существующей реализацией, вызвавшей это решение? Другими словами, было ли это техническим или политическим решением?

4b9b3361

Ответ 1

Я не могу не дать вам ответ:

Akka предоставляет стабильную и мощную библиотеку для работы с Актерами, а также множество функций, связанных с высоким concurrency (фьючерсами, агентами, участниками транзакций, STM, FSM, неблокирующими ввода-выводами,...).

Также он реализует актеров более безопасным способом, чем scala, поскольку клиентский код имеет только доступ к универсальному ActorRef. Это делает невозможным взаимодействие с другими участниками, кроме как через передачу сообщений.
[отредактировано: как отметил Роланд, это также позволяет использовать дополнительные функции, такие как отказоустойчивость, через иерархию наблюдения и прозрачность местоположения: возможность развернуть актер локально или удаленно без изменений, необходимых для кода клиента.
Общий дизайн более похож на оригинальный в erlang.]

Значительная часть основных функций была дублирована в scala и акковых актерах, поэтому унификация кажется наиболее разумным выбором (учитывая, что команда разработчиков обеих библиотек также входит в одну и ту же компанию: Typesafe).
Основной выигрыш заключается в том, чтобы избежать дублирования одних и тех же основных функций, что создавало бы проблемы с путаницей и совместимостью.

Учитывая, что выбор обусловлен, остается только решить, какая будет стандартная реализация.

Мне ясно, что Akka может предложить больше в этом отношении, будучи полномасштабной картой с множеством функций уровня предприятия, которые уже включены и в будущем будут доступны.

Я не могу придумать конкретный случай, когда scala.actors способен выполнить то, что не может сделать akka.


p.s. Аналогичное рассуждение было сделано, что привело к унификации стандартного будущего/обещания в 2.10

Весь язык scala и сообщество должны получить от упрощенного интерфейса к базовым языковым функциям вместо фрагментированной сцены из разных фреймворков, каждая из которых имеет собственный синтаксис и модель для изучения.

То же самое нельзя сказать о других, более высокоуровневых аспектах, таких как веб-фреймворки, где разработчик выигрывает от более богатой панорамы доступных решений.