Mikä on reaktiivinen ohjelmointi?

Reaktiivinen ohjelmointi on tietojenkäsittelytieteen käsite, joka kuvaa tietokoneohjelmointikielen ominaisuuksia, jotka keskittyvät sovelluksen tilan automaattiseen ylläpitoon, kun ohjelmassa käytettävät tiedot muuttuvat. Yksi reaktiivisen ohjelmointikielen pääpiirteistä on, että ilmoitetut ja lasketut muuttujat arvioidaan jatkuvasti uudelleen muina laskutoimituksina käytettävinä muuttujina. Tämä tarkoittaa sitä, että kieli reagoi tietojen tilan muutoksiin sen sijaan, että käytettäisiin pakollisempia komentoja tilan hallintaan, kuten monet perinteiset ohjelmointikielet tekevät. Reaktiivisen ohjelmoinnin filosofioita käyttävän sovelluksen teoreettinen tulos olisi ohjelma, joka muuttaa jatkuvasti ja automaattisesti näyttöä tai muita tekijöitä ohjelmaan virtaavan muuttuvan tiedon perusteella. Vaikka useita pakottavia ohjelmointimalleja voidaan käyttää samojen tulosten saavuttamiseen kuin reaktiivista ohjelmointia, reaktiivisen kielen luomisen tavoitteena olisi saada natiivituki reaktiivisille muutoksille primitiivisellä tasolla, ei objektitasolla.

Yksi tapa selventää reaktiivisen ohjelmoinnin toimintaa on verrata sitä pakolliseen ohjelmointiin. Kun kaksi numeroa lisätään pakollisella kielellä, lisäyksen tulos tallennetaan yleensä tiettyyn muistipaikkaan. Toiminto suoritetaan sillä hetkellä, kun komento suoritetaan, ja tulos irrotetaan kahdesta numerosta, jotka lisättiin summan luomiseksi. Tämä tarkoittaa, että jos jompikumpi kahdesta lisätystä numerosta muuttuu lisäyksen jälkeen, summan arvo ei muutu, koska se on jo tallennettu muistiin ja erillään alkuperäisistä operandeista.

Kun reaktiivinen ohjelmointikieli lisää kaksi muuttujaa summan luomiseksi ja yksi kahdesta muuttujasta muuttuu jossain vaiheessa tulevaisuudessa, myös summa muuttuu. Tämä tarkoittaa, että reaktiivisella ohjelmalla on kyky seurata käytettävien tietojen tilaa ja reagoida automaattisesti muutoksiin, mikä saattaa muuttaa koko sovelluksen yleistä tilaa. Pakollisessa ohjelmoinnissa on useita malleja, mukaan lukien tapahtumapohjainen ohjelmointi ja tarkkailijoiden tietomallit, jotka voivat suorittaa samat tehtävät luomalla rakenteita, jotka seuraavat datan muutoksia, mutta reaktiivisella kielellä olisi sisäänrakennetut mekanismit tämän tekemiseksi.

Reaktiivista ohjelmointikieltä voitaisiin käyttää alueilla, joilla tarvitaan mielivaltaisten tietovirtojen reaaliaikaista tulkintaa. Tämä voi sisältää tieteellisen visualisoinnin, graafiset käyttöliittymät (GUI) tai jopa reaaliaikaisen viestinnän, jossa ohjelma muuttuu jatkuvasti vastaanotetun tietovirran perusteella. On kuitenkin huomattava, että täysin toteutettuja, riippumattomia reaktiivisia ohjelmointikieliä ei todellakaan ole. Useimmat konseptin toteutukset ovat ulkoisia kirjastoja perinteisempien pakollisten tai toiminnallisten kielten muodossa.