Задать вопрос
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel

Какие задачи решает реактивное программирование?

Пытаюсь уложить в голову, что вообще такое реактивное программирование. wikipedia говорит - в общем распространение изменений, как в формулах exсel таблиц. С точки зрения ReactJS, ReduxJS - потоки данных. В первородных статьях microsoft говорится о behaviors, events и их композиции, которых достаточно. Реактивный манифест упоминает отзывчивость, отказоустойчивость и эластичность к нагрузкам. Четкой картины у меня не возникает.
Подскажите, пожалуйста, классические задачи реактивного программирования, для решения которых оно создавалось?
Надеюсь таким путем уразуметь, что это все таки такое.
  • Вопрос задан
  • 11528 просмотров
Подписаться 26 Сложный 3 комментария
Решение пользователя eRKa К ответам на вопрос (4)
@kttotto
пофиг на чем писать
Есть два варианта получить данные. Можно пассивным способом, это когда мы сами делаем запрос на получение и нам приходит ответ (вариант pull). И есть второй вариант, когда данные сами нас уведомляют об изменениях и выталкивают данные нам (вариант push). Реактивное приложение, это когда приложение само извещает нас об изменении своего состояния. Не мы делаем запрос и проверяем, а не изменилось ли там что-то, а приложение само нам сигнализирует. Ну и конечно эти события, эти сигналы мы соответственно можем обрабатывать.

Реактивность дает слабую связанность в первую очередь. Во-вторых, в некоторых случая это дает возможность писать более простой и понятный код. Например мы можем взять обычную коллекцию, преобразовать ее к реактивной коллекции и тогда мы будем иметь коллекцию событий об изменении данных в ней. Мы очень просто получаем только те данные, которые изменились. По этой коллекции мы можем делать выборку, фильтровать и т.д. Если бы мы это делали традиционным способом, то нам нужно было бы закэшировать текущие данные, потом делать запрос получить новые данные, потом их сравнить с кэшем и разница и будет те самые изменения.
Ответ написан