Programarea reactivă este o paradigmă de programare axată pe fluxul de date și propagarea schimbărilor. Aceasta înseamnă că trebuie să fie posibilă exprimarea cu ușurință a fluxurilor de date statice și dinamice și că modelul de execuție subiacent trebuie să propage automat modificările prin fluxul de date.
De exemplu, în programarea imperativă, atribuirea a = b + cva însemna că variabilei ai se va atribui rezultatul operației b + cfolosind valorile curente (la momentul calculului) ale variabilelor. Ulterior, valorile variabilelor bși cpot fi modificate fără niciun efect asupra valorii variabilei a.
În programarea reactivă, valoarea ava fi recalculată automat pe baza noilor valori.
Procesoarele moderne de foi de calcul sunt un exemplu de programare reactivă. Celulele de tabel pot conține valori de șir sau o formulă precum „=B1+C1”, a cărei valoare va fi calculată pe baza valorilor celulelor corespunzătoare. Când valoarea uneia dintre celulele dependente este modificată, valoarea acelei celule va fi actualizată automat.
Un alt exemplu este limbajele de descriere hardware (HDL) precum Verilog . Programarea reactivă vă permite să modelați modificările pe măsură ce acestea se propagă în cadrul unui model.
Programarea reactivă a fost propusă ca o modalitate de a crea cu ușurință interfețe cu utilizatorul, animații sau simulări ale sistemelor care variază în timp.
De exemplu, în arhitectura MVC , folosind programarea reactivă, puteți implementa reflectarea automată a modificărilor de la Model la Vedere și invers de la Vedere la Model.
Este posibil să combinați paradigmele programării reactive și imperative. Într-un astfel de pachet, programele imperative ar putea funcționa pe structuri de date reactive.
Programarea reactivă orientată pe obiecte (OORP) este o combinație între o abordare orientată pe obiecte cu una reactivă. Probabil cel mai natural mod de a face acest lucru este că, în loc de metode și câmpuri, obiectele au reacții care recalculează automat valorile, iar alte reacții depind de modificările acestor valori.
Programarea funcțională este cea mai naturală bază pentru implementarea unei arhitecturi reactive, care se potrivește bine cu concurența .
Programarea Reactivă Funcțională (FRP) s-a format în 1997, cu propunerea limbajului Fran [1] . Mai târziu, au fost dezvoltate limbaje precum Fruit, FRP și RT-FRP, FAL, Frob, Fvision, Yampa [2] .
Cea mai simplă expresie funcțională reactivă are următoarea formă [3] :
b1 ` până la ` e => b2care înseamnă literal „ comportă-te ca b1înainte de apariția evenimentului e, după aceea comportă-te cab2 ”.