Kaj je reaktivno programiranje?

Reaktivno programiranje je koncept računalništva, ki opisuje lastnosti računalniškega programskega jezika, osredotočenega na samodejno vzdrževanje stanja aplikacije, ko se podatki, uporabljeni v programu, spreminjajo. Ena od glavnih značilnosti reaktivnega programskega jezika je, da se deklarirane in izračunane spremenljivke nenehno ponovno ovrednotijo, saj se druge spremenljivke, uporabljene pri njihovem izračunu, spreminjajo. To pomeni, da se jezik odziva na spremembe v stanju podatkov, v nasprotju z uporabo bolj nujnih ukazov za upravljanje stanja, kot to počnejo številni tradicionalni programski jeziki. Teoretični rezultat aplikacije, ki uporablja filozofijo reaktivnega programiranja, bi bil program, ki nenehno in samodejno spreminja zaslon ali druge dejavnike na podlagi spreminjajočih se podatkov, ki tečejo v program. Čeprav je za doseganje enakih rezultatov kot reaktivno programiranje mogoče uporabiti več modelov imperativnega programiranja, bi bil cilj ustvarjanja reaktivnega jezika imeti domačo podporo za reaktivne spremembe na primitivni ravni, namesto na ravni objekta.

Eden od načinov za pomoč pri razjasnitvi delovanja reaktivnega programiranja je primerjava z imperativnim programiranjem. Ko sta dve številki dodani v imperativnem jeziku, se rezultat seštevanja običajno shrani na dano pomnilniško mesto. Operacija se izvede v trenutku, ko se izvede ukaz, rezultat pa je ločen od dveh številk, ki sta bili dodani za ustvarjanje vsote. To pomeni, da če se katero od dveh dodanih številk spremeni po seštevanju, se vrednost vsote ne bi spremenila, ker je že shranjena v pomnilniku in ločena od prvotnih operandov.

Ko reaktivni programski jezik doda dve spremenljivki za ustvarjanje vsote in se ena od obeh spremenljivk spremeni v nekem trenutku v prihodnosti, se bo spremenila tudi vsota. To pomeni, da ima reaktivni program možnost spremljanja stanja uporabljenih podatkov in samodejnega odzivanja na spremembe, kar lahko spremeni splošno stanje celotne aplikacije. V imperativnem programiranju obstaja več modelov, vključno s programiranjem na podlagi dogodkov in podatkovnimi modeli opazovalcev, ki lahko izvajajo enake naloge z ustvarjanjem struktur, ki spremljajo spremembe podatkov, vendar bi imel reaktivni jezik vgrajene mehanizme za to.

Reaktivni programski jezik bi se lahko uporabljal na področjih, kjer je potrebna interpretacija poljubnih podatkovnih tokov v realnem času. To lahko vključuje znanstveno vizualizacijo, grafične uporabniške vmesnike (GUI) ali celo komunikacije v realnem času, pri katerih se program nenehno spreminja glede na prejeti tok podatkov. Vendar je treba opozoriti, da v resnici ni popolnoma implementiranih neodvisnih reaktivnih programskih jezikov. Večina delovnih izvedb koncepta je v obliki zunanjih knjižnic za bolj tradicionalne imperativne ali funkcionalne jezike.