Reaktiv programmering är ett programmeringsparadigm fokuserat på dataflöde och förändringsutbredning. Detta innebär att det måste vara möjligt att enkelt uttrycka statiska och dynamiska dataflöden, och att den underliggande exekveringsmodellen automatiskt ska sprida förändringar genom dataflödet.
Till exempel, i imperativ programmering, kommer tilldelning a = b + catt innebära att variabeln akommer att tilldelas resultatet av operationen b + cmed hjälp av de aktuella (vid beräkningstillfället) värden för variablerna. Senare kan värdena på variablerna boch cändras utan att påverka variabelns värde a.
Vid reaktiv programmering kommer värdet aautomatiskt att räknas om baserat på de nya värdena.
Moderna kalkylbladsprocessorer är ett exempel på reaktiv programmering. Tabellceller kan innehålla strängvärden eller en formel som "=B1+C1", vars värde kommer att beräknas baserat på värdena för motsvarande celler. När värdet på en av de beroende cellerna ändras, kommer värdet för den cellen att uppdateras automatiskt.
Ett annat exempel är hårdvarubeskrivningsspråk (HDL) som Verilog . Reaktiv programmering låter dig modellera förändringar när de fortplantar sig inom en modell.
Reaktiv programmering har föreslagits som ett sätt att enkelt skapa användargränssnitt, animationer eller simuleringar av tidsvarierande system.
Till exempel, i MVC- arkitekturen, med hjälp av reaktiv programmering, kan du implementera automatisk reflektion av ändringar från modell till vy och vice versa från vy till modell.
Det är möjligt att kombinera paradigmen för reaktiv och imperativ programmering. I ett sådant paket kan imperativa program fungera på reaktiva datastrukturer.
Objektorienterad reaktiv programmering (OORP) är en kombination av ett objektorienterat tillvägagångssätt med ett reaktivt tillvägagångssätt. Det mest naturliga sättet att göra detta är förmodligen att istället för metoder och fält har objekt reaktioner som automatiskt räknar om värden, och andra reaktioner beror på ändringar av dessa värden.
Funktionell programmering är den mest naturliga grunden för att implementera en reaktiv arkitektur, som passar bra med samtidighet .
Funktionell reaktiv programmering (FRP) bildades 1997, med förslag från det franska språket [1] . Senare utvecklades sådana språk som Fruit, FRP och RT-FRP, FAL, Frob, Fvision, Yampa [2] .
Det enklaste funktionella reaktiva uttrycket har följande form [3] :
b1 ` tills ` e => b2vilket bokstavligen betyder " bete sig som b1innan händelsen inträffade e, efter det bete sig somb2 ".