Reaktivní programování je programovací paradigma zaměřené na tok dat a šíření změn. To znamená, že musí být možné snadno vyjádřit statické a dynamické datové toky a že základní prováděcí model musí automaticky šířit změny datovým tokem.
Například v imperativním programování a = b + cbude přiřazení znamenat, že proměnné abude přiřazen výsledek operace b + cpomocí aktuálních (v době výpočtu) hodnot proměnných. Později lze hodnoty proměnných ba cměnit bez jakéhokoli vlivu na hodnotu proměnné a.
Při reaktivním programování bude hodnota aautomaticky přepočítána na základě nových hodnot.
Moderní tabulkové procesory jsou příkladem reaktivního programování. Buňky tabulky mohou obsahovat řetězcové hodnoty nebo vzorec jako "=B1+C1", jehož hodnota bude vypočtena na základě hodnot odpovídajících buněk. Když se změní hodnota jedné ze závislých buněk, hodnota této buňky se automaticky aktualizuje.
Dalším příkladem jsou jazyky pro popis hardwaru (HDL), jako je Verilog . Reaktivní programování vám umožňuje modelovat změny tak, jak se šíří v modelu.
Reaktivní programování bylo navrženo jako způsob, jak snadno vytvářet uživatelská rozhraní, animace nebo simulace časově proměnných systémů.
Například v architektuře MVC můžete pomocí reaktivního programování implementovat automatickou reflexi změn z modelu do pohledu a naopak z pohledu na model.
Je možné kombinovat paradigmata reaktivního a imperativního programování. V takovém balíku by imperativní programy mohly pracovat na reaktivních datových strukturách.
Objektově orientované reaktivní programování (OORP) je kombinací objektově orientovaného přístupu s reaktivním přístupem. Pravděpodobně nejpřirozenější způsob, jak toho dosáhnout, je, že místo metod a polí mají objekty reakce , které automaticky přepočítávají hodnoty, a další reakce závisí na změnách těchto hodnot.
Funkční programování je nejpřirozenějším základem pro implementaci reaktivní architektury, která se dobře spáruje se souběžností .
Funkční reaktivní programování (FRP) vzniklo v roce 1997 s návrhem jazyka Fran [1] . Později byly vyvinuty jazyky jako Fruit, FRP a RT-FRP, FAL, Frob, Fvision, Yampa [2] .
Nejjednodušší funkční reaktivní výraz má následující tvar [3] :
b1 ` až ` e => b2což doslovně znamená " chovej se jako b1před výskytem události e, po tom se chovej jakob2 ".