Hvad er reaktiv programmering?
Reaktiv programmering er et computervidenskabskoncept, der beskriver egenskaberne ved et computerprogrammeringssprog, der fokuserer på automatisk at opretholde en applikations tilstand, da de data, der bruges i programændringen. Et af hovedfunktionerne i et reaktivt programmeringssprog er, at deklarerede og beregnede variabler konstant revurderes som andre variabler, der bruges i deres beregningsændring. Dette betyder, at sproget reagerer på ændringerne i datatilstanden i modsætning til at bruge mere tvingende kommandoer til at styre staten, som mange traditionelle programmeringssprog gør. Det teoretiske resultat af en applikation, der anvender reaktive programmeringsfilosofier, ville være et program, der konstant og automatisk ændrer displayet eller andre faktorer baseret på de ændrede data, der strømmer ind i programmet. Selvom flere vigtige programmeringsmodeller kan bruges til at opnå de samme resultater som reaktiv programmering, ville målet med at skabe et reaktivt sprog være at have native støtte til reaktive ændringer på det primitive niveau i stedet for på et objektniveau.
En måde at hjælpe med at afklare, hvordan reaktiv programmering fungerer, er at sammenligne det med tvingende programmering. Når to numre tilføjes på et imperativt sprog, gemmes resultatet af tilføjelsen normalt på et givet hukommelsessted. Handlingen finder sted i det øjeblik kommandoen udføres, og resultatet kobles fra de to numre, der blev tilføjet for at oprette summen. Dette betyder, at hvis et af de to numre, der blev tilføjet, ændres efter tilføjelsen finder sted, ville værdien af summen ikke ændres, fordi den allerede er gemt i hukommelsen og adskilt fra de originale operander.
Når et reaktivt programmeringssprog tilføjer to variabler for at oprette en sum, og en af de to variabler ændres på et tidspunkt i fremtiden, ændres også summen. Dette indebærer, at et reaktivt program har evnen til at overvåge tilstanden af de anvendte data og reagere automatisk på ændringer, hvilket potentielt kan ændre den samlede tilstand af hele applikationen. Der er flere modeller i nødvendig programmering, herunder begivenhedsbaseret programmerings- og observaturdatamodeller, der kan udføre de samme opgaver ved at oprette strukturer, der overvåger dataændringer, men et reaktivt sprog ville have indbyggede mekanismer til at gøre dette.
Brugen til et reaktivt programmeringssprog kan være i områder, hvor realtidsfortolkning af vilkårlige datastrømme er nødvendig. Dette kan omfatte videnskabelig visualisering, grafiske brugergrænseflader (GUI'er) eller endda kommunikation i realtid, hvor programmet konstant ændres, baseret på den datastrøm, der modtages. Det skal dog bemærkes, at der virkelig ikke findes nogen fuldt ud implementerede, uafhængige reaktive programmeringssprog. De fleste arbejdende implementeringer af konceptet har form af eksterne biblioteker til mere traditionelle imperativ eller funktionelle sprog.