Što je reaktivno programiranje?

Reaktivno programiranje je koncept računalne znanosti koji opisuje svojstva računalnog programskog jezika usmjerenog na automatsko održavanje stanja aplikacije kako se podaci korišteni u programu mijenjaju. Jedna od glavnih značajki reaktivnog programskog jezika je da se deklarirane i izračunate varijable stalno ponovno procjenjuju jer se druge varijable koje se koriste u njihovom proračunu mijenjaju. To znači da jezik reagira na promjene u stanju podataka, za razliku od korištenja imperativnijih naredbi za upravljanje stanjem, kao što to čine mnogi tradicionalni programski jezici. Teoretski rezultat aplikacije koja koristi filozofiju reaktivnog programiranja bio bi program koji stalno i automatski mijenja prikaz ili druge čimbenike na temelju promjenjivih podataka koji ulaze u program. Iako se nekoliko modela imperativnog programiranja može koristiti za postizanje istih rezultata kao reaktivno programiranje, cilj stvaranja reaktivnog jezika bio bi imati izvornu podršku za reaktivne promjene na primitivnoj razini, umjesto na razini objekta.

Jedan od načina da se razjasni kako funkcionira reaktivno programiranje je usporedba s imperativnim programiranjem. Kada se dva broja zbrajaju u imperativnom jeziku, rezultat zbrajanja obično se pohranjuje na određeno memorijsko mjesto. Operacija se odvija u trenutku kada se naredba izvrši, a rezultat se odvaja od dva broja koja su zbrojena za stvaranje zbroja. To znači da, ako se bilo koji od dva broja koja su dodana promijeni nakon zbrajanja, vrijednost zbroja se neće promijeniti jer je već pohranjena u memoriji i odvojena od izvornih operanda.

Kada reaktivni programski jezik doda dvije varijable za stvaranje zbroja, a jedna od dvije varijable se promijeni u nekom trenutku u budućnosti, tada će se i zbroj promijeniti. To podrazumijeva da reaktivni program ima sposobnost praćenja stanja podataka koji se koriste i da automatski reagira na promjene, potencijalno mijenjajući ukupno stanje cijele aplikacije. Postoji nekoliko modela u imperativnom programiranju, uključujući programiranje temeljeno na događajima i modele podataka promatrača, koji mogu obavljati iste zadatke stvaranjem struktura koje prate promjene podataka, ali reaktivni jezik bi imao ugrađene mehanizme za to.

Reaktivni programski jezik može se koristiti u područjima u kojima je potrebna interpretacija proizvoljnih tokova podataka u stvarnom vremenu. To može uključivati ​​znanstvenu vizualizaciju, grafička korisnička sučelja (GUI) ili čak komunikaciju u stvarnom vremenu u kojoj se program stalno mijenja na temelju primljenog toka podataka. Međutim, treba napomenuti da stvarno ne postoje potpuno implementirani, neovisni reaktivni programski jezici. Većina radnih implementacija koncepta ima oblik vanjskih knjižnica za tradicionalnije imperativne ili funkcionalne jezike.