Как стать автором
Обновить

Комментарии 23

Жалко, книги выходят иногда не в том порядке, в котором было бы осмысленно.

У мэннинга скоро выйдет более общая Reactive Design Patterns (и в этой серии еще как минимум две книги), мне кажется, ее осмысленнее читать первой.
Спасибо, рассмотрим
Для тех, кто как и я заинтересовался комментарием: если запросить бесплатный отрывок с www.typesafe.com, то на почту прилетит купон на скидку на саму книгу в 45% для покупки на manning.com.
Печаль в том, что эта книга, на самом деле, еще не вышла, а читать ее MEAP оказалось не очень удобно.
В рамках курса reactive programming на coursera на неё давали скидку 50%.
Однозначно нужна книга.
Очень мало структурированной информации на эту тему.
Когда перевод планируется к выходу?
Нам хотя бы права получить ). Обязательно сориентируем по срокам выхода, если решим издавать.

Из названия статьи
Akka, акторы и реактивное программирование
ожидал увидеть что-нибудь о реактивном программировании. Может быть я не внимательно читал. Можете пояснить как оно реализуется на акторах?
А что вас смущает? Акторы (в той терминологии, на которой построена книга) — изначально событийно-ориентированы, событие на входе, события на выходе. По-моему, это квинтэссенция реактивного программирования.
Книгу я не читал, поэтому и задал вопрос.
Событийная архитектура еще не означает реактивность, в том числе как реактивность не обязательно должна быть реализована при помощи событий.
В (еще не вышедшей) книге, на которую я ссылаюсь выше, есть набор определений, согласно которым модель акторов в акке — реактивна.

А какими определениями реактивности пользуетесь вы?
Для меня реактивное программирование это программирование построенное на инвариантах (если конечно правомерно так выразиться).
Переменные образуют граф из этих инвариантов (зависимостей). Любое изменение значения переменной из этого графа вызывает его пересчет. Таким образом значение переменных всегда находиться в консистентном (не противоречивом по отношению к инвариантам) состоянии.
Это понимание не имеет никакого отношения ни к акторам, ни к той концепции реактивного программирования, которая использована в акке (или других известных мне современных реактивных моделях), поэтому я никак не могу прокомментировать его применимость к чему-либо.
Так мой первоначальный вопрос как раз и был о том как реактивное программирование реализовано в акторах :)
Я если честно, вообще не знаком с понятием «реактивная модель».
Как мне кажется, я как раз и описал общую концепцию реактивного программирования своими словами.
На практике же существует несколько подходов в ее реализации: FRP например.
Если не сложно опишите что такое «реактивная модель» и с какими вы знакомы
Правильно спрашивать не «как реактивное программирование реализовано в акторах», а «что в акторах понимается под реактивным программированием».

А дальше просто идем и читаем Reactive Manifesto. Мой вольный сильно сжатый перевод:

Реактивные системы:
  • Отзывчивы, что означает, что система, если ответ вообще возможен, отвечает за разумное время
  • Легко восстанавливаются: система сохраняет отзывчивость даже после отказа.
  • Эластичны: система сохраняет отзывчивость при изменении нагрузки
  • Основаны на сообщениях

Видимо мы о разном говорим )
Я так понимаю реактивные системы, к-ые вы упоминаете здесь — это «быстрореагирующие» системы.
Я же имел в виду вот это Реактивное программирование
Не я упоминаю, а авторы манифеста (аналогично с ними — авторы Акки, вышеозначенных книг, курса по FRP и так далее… зачастую это, правда, одни и те же люди).
У вас очень упрощеный взгляд на этот вопрос.
То реактивное программирование, которое упоминаете вы, если так можно выразится «входит в состав» того реактивного программирования, которое сейчас принято понимать. И сокращеный манифест которого привели выше.

Фишка в том, что Akka это не табличный процессор. Это надо просто понимать.
Akka это фреймворк общего назначения, на котором в том числе можно построить и табличный процессор. Это кстати одно из задай на курсах Одерского по Scala, Akka и реактивному программированию).
В общем случае, программы которые строят на Akka гораздо сложнее чем просто пересчет формул в экселе. Поэтому сравнивать их очень странно.
И сам вопрос «как реактивное программирование реализовано в акторах» звучит очень странно. Это как спросить «как реактивное программирование реализовано в C# или на Python» или на любом другом языке или фреймворке. Ибо, учитвая что это объекты общего назначения, ответ будет простым — так как вы сами реализуете.

Сама же реактивность в акторных системах реализуется просто, вся система реагирует на входящие сообщения и реагируя на них изменяет свое состояние на выходе. Без промежуточного сохранения. Сделано это через передачу сообщений, что дает много профита, особенно для многопоточной разработки. Сам актор — «формула», которая делает одно вычисление. Без состояния. Таким образом запуская много таких формул получаем тот самый поток данных который проходя через множество акторов на выходе дает результат.

Но надо понимать, что конкретное применение зависит от задач проекта. Сам фреймворк позволяет множетсво решений.
Сам актор — «формула», которая делает одно вычисление. Без состояния.

Это не самый подходящий способ использования акторов. Акторы больше предназначены для безопасного хранения состояния в многопоточной среде, а если состояние отсутствует, то фьюча часто бывает проще и удобнее.
Ну вообще-то это всего лишь один из вариантов, в контексте конкретного примера.
Никто и не говорил, что это самый лучший вариант использования.
Плюсую, во фронт-енде довольно много хороших примеров использования FRP (на сайте Elm, например), было бы круто найти хорошую книгу как это можно это еще применять на бекенде, с базами данных, application серверами и вот этим всем.
Если книжка написана тем же языком, что и эта статья — то наверно лучше не надо было её выпускать. Чрезвычайно дырявое и рваное повествование. Постоянно появляющиеся ниоткуда новые понятия и ссылки в никуда. Не надо так.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.