Реактивне програмування — парадигма програмування, орієнтована на потоки даних та розповсюдження змін. Це означає, що повинна існувати можливість легко висловлювати статичні і динамічні потоки даних, а також те, що нижележащая модель виконання повинна автоматично поширювати зміни завдяки потоку даних.
Наприклад, імперативний програмуванні присвоювання a := b + c буде означати, що змінної a буде присвоєно результат виконання операції b + c, використовуючи поточні (на момент обчислення) значення змінних. Пізніше значення змінних b і c можуть бути змінені без будь-якого впливу на значення змінної a.
У реактивному ж програмуванні значення a буде автоматично перераховано, ґрунтуючись на нових значеннях.
Сучасні табличні процесори являють собою приклад реактивного програмування. Комірки таблиці можуть містити рядкові значення або формулу виду «=B1+C1», значення якої буде обчислено виходячи з значень відповідних комірок. Коли значення одного із залежних клітинок буде змінено, значення цієї комірки буде автоматично оновлено.
Інший приклад — це мови опису апаратури (HDL), такі як Verilog. Реактивне програмування дозволяє моделювати зміни у вигляді їх поширення всередині моделі.
Реактивне програмування пропонувалося як шлях для легкого створення користувацьких інтерфейсів, анімації та моделювання систем, що змінюються в часі.
Приміром, у MVC архітектурі з допомогою реактивного програмування можна реалізувати автоматичне відображення змін з Model View у і навпаки з View Model.
Можна з'єднати парадигми реактивного та імперативного програмування. У такій зв'язці імперативні програми могли б працювати над реактивними структурами даних.
Об'єктно-орієнтоване реактивне програмування (ООРП) — це комбінація об'єктно-орієнтованого підходу з реактивним. Ймовірно, найбільш природний спосіб зробити це полягає в тому, що замість методів і полів, біля об'єктів є реакції, які автоматично перераховують значення і інші реакції залежать від змін цих значень.
Функціональне програмування є найбільш природним базисом для реалізації реактивної архітектури, добре поєднуючись з паралелізмом.
Функціональне реактивне програмування (ФРП) сформувалося в 1997 році, з пропозицією мови Fran[1]. Пізніше були розроблені такі мови як Fruit, FRP і RT-FRP, FAL, Frob, Fvision, Yampa[].
Найпростіше функціональне реактивне вираз має наступну форму[3]: b1 `until` e => b2
що буквально означає «вести себе як b1 до виникнення події e, після цього вести себе як b2».