Reaktiv programmering er et programmeringsparadigme med fokus på dataflow og forandringsudbredelse. Det betyder, at det nemt skal være muligt at udtrykke statiske og dynamiske datastrømme, og at den bagvedliggende eksekveringsmodel automatisk skal udbrede ændringer gennem datastrømmen.
For eksempel vil tildeling i imperativ programmering a = b + cbetyde, at variablen avil blive tildelt resultatet af operationen b + cved hjælp af de aktuelle (på beregningstidspunktet) værdier af variablerne. Senere kan værdierne af variablerne bog cændres uden nogen indflydelse på værdien af variablen a.
Ved reaktiv programmering vil værdien aautomatisk blive genberegnet baseret på de nye værdier.
Moderne regnearksprocessorer er et eksempel på reaktiv programmering. Tabelceller kan indeholde strengværdier eller en formel som "=B1+C1", hvis værdi vil blive beregnet ud fra værdierne af de tilsvarende celler. Når værdien af en af de afhængige celler ændres, vil værdien af denne celle automatisk blive opdateret.
Et andet eksempel er hardware description languages (HDL'er) såsom Verilog . Reaktiv programmering giver dig mulighed for at modellere ændringer, efterhånden som de forplanter sig i en model.
Reaktiv programmering er blevet foreslået som en måde at nemt skabe brugergrænseflader, animationer eller simuleringer af tidsvarierende systemer.
For eksempel, i MVC- arkitekturen, ved hjælp af reaktiv programmering, kan du implementere automatisk afspejling af ændringer fra Model til View og omvendt fra View til Model.
Det er muligt at kombinere paradigmerne for reaktiv og imperativ programmering. I et sådant bundt kunne imperative programmer arbejde på reaktive datastrukturer.
Objektorienteret reaktiv programmering (OORP) er en kombination af en objektorienteret tilgang med en reaktiv. Den nok mest naturlige måde at gøre dette på er, at objekter i stedet for metoder og felter har reaktioner , der automatisk genberegner værdier, og andre reaktioner afhænger af ændringer i disse værdier.
Funktionel programmering er det mest naturlige grundlag for at implementere en reaktiv arkitektur, der parrer godt med samtidighed .
Functional Reactive Programming (FRP) blev dannet i 1997 med forslag fra det franske sprog [1] . Senere blev sprog som Fruit, FRP og RT-FRP, FAL, Frob, Fvision, Yampa [2] udviklet .
Det enkleste funktionelle reaktive udtryk har følgende form [3] :
b1 ` indtil ` e => b2hvilket bogstaveligt betyder " opfør dig som b1før begivenheden indtraf e, opfør dig derefter somb2 ".