Programarea reactivă este un concept informatic care descrie proprietățile unui limbaj de programare pentru calculatoare concentrat pe menținerea automată a stării unei aplicații pe măsură ce datele utilizate în program se modifică. Una dintre principalele caracteristici ale unui limbaj de programare reactiv este că variabilele declarate și calculate sunt constant reevaluate pe măsură ce alte variabile utilizate în calculul lor se modifică. Aceasta înseamnă că limbajul reacționează la schimbările în starea datelor, spre deosebire de utilizarea unor comenzi mai imperative pentru a gestiona starea, așa cum fac multe limbaje de programare tradiționale. Rezultatul teoretic al unei aplicații care utilizează filozofii de programare reactivă ar fi un program care schimbă constant și automat afișajul sau alți factori pe baza datelor în schimbare care curg în program. Deși mai multe modele imperative de programare pot fi folosite pentru a obține aceleași rezultate ca și programarea reactivă, scopul creării unui limbaj reactiv ar fi acela de a avea suport nativ pentru modificări reactive la nivel primitiv, în loc de la nivel de obiect.
O modalitate de a ajuta la clarificarea modului în care funcționează programarea reactivă este de a o compara cu programarea imperativă. Când două numere sunt adăugate într-o limbă imperativă, rezultatul adunării este de obicei stocat într-o locație de memorie dată. Operația are loc în momentul în care comanda este executată, iar rezultatul este decuplat de cele două numere care au fost adăugate pentru a crea suma. Aceasta înseamnă că, dacă oricare dintre cele două numere care au fost adăugate se schimbă după ce are loc adunarea, valoarea sumei nu s-ar modifica deoarece este deja stocată în memorie și separată de operanzii originali.
Când un limbaj de programare reactiv adaugă două variabile pentru a crea o sumă și una dintre cele două variabile se schimbă la un moment dat în viitor, atunci și suma se va schimba. Aceasta implică faptul că un program reactiv are capacitatea de a monitoriza starea datelor utilizate și de a reacționa automat la modificări, schimbând potențial starea generală a întregii aplicații. Există mai multe modele în programarea imperativă, inclusiv programarea bazată pe evenimente și modelele de date ale observatorului, care pot îndeplini aceleași sarcini prin crearea de structuri care monitorizează modificările datelor, dar un limbaj reactiv ar avea mecanisme încorporate pentru a face acest lucru.
Utilizarea unui limbaj de programare reactiv ar putea fi în zonele în care este necesară interpretarea în timp real a fluxurilor de date arbitrare. Aceasta ar putea include vizualizare științifică, interfețe grafice cu utilizatorul (GUI) sau chiar comunicații în timp real în care programul se schimbă constant în funcție de fluxul de date primit. Trebuie remarcat, totuși, că într-adevăr nu există limbaje de programare reactive independente complet implementate. Majoritatea implementărilor de lucru ale conceptului iau forma unor biblioteci externe pentru limbaje mai tradiționale imperative sau funcționale.