Reaktiivinen ohjelmointi on ohjelmointiparadigma , joka keskittyy tiedonkulkuun ja muutoksen etenemiseen. Tämä tarkoittaa, että staattisia ja dynaamisia tietovirtoja on voitava ilmaista helposti ja että taustalla olevan suoritusmallin tulee automaattisesti levittää muutoksia tietovirran läpi.
Esimerkiksi pakottavassa ohjelmoinnissa osoitus a = b + ctarkoittaa, että muuttujalle aosoitetaan toiminnan tulos b + ckäyttämällä muuttujien nykyisiä (laskentahetkellä) arvoja. Myöhemmin muuttujien bja arvoja cvoidaan muuttaa ilman, että se vaikuttaa muuttujan arvoon a.
Reaktiivisessa ohjelmoinnissa arvo alasketaan automaattisesti uudelleen uusien arvojen perusteella.
Nykyaikaiset taulukkolaskentaprosessorit ovat esimerkki reaktiivisesta ohjelmoinnista. Taulukon solut voivat sisältää merkkijonoarvoja tai kaavan, kuten "=B1+C1", jonka arvo lasketaan vastaavien solujen arvojen perusteella. Kun jonkin riippuvaisen solun arvoa muutetaan, kyseisen solun arvo päivitetään automaattisesti.
Toinen esimerkki ovat laitteiston kuvauskielet (HDL), kuten Verilog . Reaktiivisen ohjelmoinnin avulla voit mallintaa muutoksia, kun ne etenevät mallissa.
Reaktiivista ohjelmointia on ehdotettu tapana luoda helposti käyttöliittymiä, animaatioita tai simulaatioita ajallisesti muuttuvista järjestelmistä.
Esimerkiksi MVC - arkkitehtuurissa reaktiivista ohjelmointia käyttämällä voit toteuttaa muutosten automaattisen heijastuksen mallista näkymään ja päinvastoin näkymästä malliin.
On mahdollista yhdistää reaktiivisen ja imperatiivisen ohjelmoinnin paradigmat. Tällaisessa paketissa pakolliset ohjelmat voisivat työskennellä reaktiivisten tietorakenteiden kanssa.
Olio-reaktiivinen ohjelmointi (OORP) on yhdistelmä oliolähtöistä lähestymistapaa reaktiiviseen. Luultavasti luonnollisin tapa tehdä tämä on, että menetelmien ja kenttien sijaan kohteissa on reaktioita , jotka laskevat arvot automaattisesti uudelleen, ja muut reaktiot riippuvat arvojen muutoksista.
Funktionaalinen ohjelmointi on luonnollisin perusta reaktiivisen arkkitehtuurin toteuttamiselle, ja se sopii hyvin rinnakkaisuuden kanssa .
FRP (Functional Reactive Programming) perustettiin vuonna 1997 fran-kielen ehdotuksella [1] . Myöhemmin kehitettiin sellaisia kieliä kuin Fruit, FRP ja RT-FRP, FAL, Frob, Fvision, Yampa [2] .
Yksinkertaisin funktionaalinen reaktiivinen lauseke on muodossa [3] :
b1 ` kunnes ` e => b2joka tarkoittaa kirjaimellisesti " käyttäytyä kuten b1ennen tapahtumaa e, sen jälkeen käyttäytyä kutenb2 " .