Kas yra reaktyvusis programavimas?

Reaktyvusis programavimas yra informatikos koncepcija, apibūdinanti kompiuterio programavimo kalbos savybes, orientuotas į automatinį programos būsenos palaikymą, kai keičiasi programoje naudojami duomenys. Viena iš pagrindinių reaktyviosios programavimo kalbos ypatybių yra ta, kad deklaruojami ir apskaičiuoti kintamieji yra nuolat iš naujo įvertinami, nes keičiasi kiti jų skaičiavime naudojami kintamieji. Tai reiškia, kad kalba reaguoja į duomenų būsenos pokyčius, o ne naudoja daugiau būtinų komandų būsenai valdyti, kaip tai daro daugelis tradicinių programavimo kalbų. Teorinis programos, kurioje naudojamos reaktyviosios programavimo filosofijos, rezultatas būtų programa, kuri nuolat ir automatiškai keičia ekraną ar kitus veiksnius pagal besikeičiančius duomenis, patenkančius į programą. Nors keli būtini programavimo modeliai gali būti naudojami norint pasiekti tokius pat rezultatus kaip ir reaktyvusis programavimas, reaktyviosios kalbos kūrimo tikslas būtų turėti savąjį reaktyvių pokyčių palaikymą primityviame, o ne objekto lygmenyje.

Vienas iš būdų paaiškinti, kaip veikia reaktyvusis programavimas, yra palyginti jį su privalomu programavimu. Kai privaloma kalba pridedami du skaičiai, pridėjimo rezultatas paprastai išsaugomas tam tikroje atminties vietoje. Operacija atliekama tuo metu, kai įvykdoma komanda, o rezultatas atsiejamas nuo dviejų skaičių, kurie buvo pridėti, kad būtų sukurta suma. Tai reiškia, kad jei kuris nors iš dviejų pridėtų skaičių pasikeis po pridėjimo, sumos reikšmė nepasikeistų, nes ji jau yra saugoma atmintyje ir atskirta nuo pradinių operandų.

Kai reaktyvioji programavimo kalba prideda du kintamuosius, kad sukurtų sumą, o vienas iš dviejų kintamųjų pasikeis tam tikru momentu ateityje, tada suma taip pat pasikeis. Tai reiškia, kad reaktyvi programa turi galimybę stebėti naudojamų duomenų būseną ir automatiškai reaguoti į pokyčius, galinčius pakeisti bendrą visos programos būseną. Egzistuoja keli būtinojo programavimo modeliai, įskaitant įvykiais pagrįstą programavimą ir stebėtojo duomenų modelius, kurie gali atlikti tas pačias užduotis kurdami struktūras, kurios stebi duomenų pokyčius, tačiau reaktyviojoje kalboje būtų įmontuoti mechanizmai tai padaryti.

Reaktyvioji programavimo kalba gali būti naudojama tose srityse, kuriose reikalingas savavališkų duomenų srautų interpretavimas realiuoju laiku. Tai gali būti mokslinė vizualizacija, grafinės vartotojo sąsajos (GUI) ar net realaus laiko komunikacijos, kuriose programa nuolat keičiasi pagal gaunamą duomenų srautą. Tačiau reikia pažymėti, kad visiškai įdiegtų, nepriklausomų reaktyviųjų programavimo kalbų tikrai nėra. Dauguma veikiančių koncepcijos įgyvendinimų yra išorinių bibliotekų forma tradicinėms imperatyviosioms ar funkcinėms kalboms.