Vad är reaktiv programmering?

Reaktiv programmering är ett datavetenskapligt koncept som beskriver egenskaperna hos ett datorprogrammeringsspråk fokuserat på att automatiskt bibehålla tillståndet för en applikation när data som används i programmet ändras. En av huvuddragen i ett reaktivt programmeringsspråk är att deklarerade och beräknade variabler ständigt omvärderas när andra variabler som används i deras beräkning ändras. Detta innebär att språket reagerar på förändringar i datatillståndet, i motsats till att använda mer imperativa kommandon för att hantera tillståndet, som många traditionella programmeringsspråk gör. Det teoretiska resultatet av en applikation som använder reaktiva programmeringsfilosofier skulle vara ett program som ständigt och automatiskt ändrar displayen eller andra faktorer baserat på de förändrade data som flödar in i programmet. Även om flera imperativa programmeringsmodeller kan användas för att uppnå samma resultat som reaktiv programmering, skulle målet med att skapa ett reaktivt språk vara att ha inbyggt stöd för reaktiva förändringar på primitiv nivå, istället för på objektnivå.

Ett sätt att hjälpa till att klargöra hur reaktiv programmering fungerar är att jämföra det med imperativ programmering. När två siffror läggs till på ett imperativt språk, lagras resultatet av tillägget vanligtvis på en given minnesplats. Operationen sker i samma ögonblick som kommandot utförs, och resultatet frikopplas från de två siffrorna som lades till för att skapa summan. Detta betyder att om något av de två talen som lades till ändras efter att tillägget äger rum, skulle värdet på summan inte ändras eftersom det redan är lagrat i minnet och skilt från de ursprungliga operanderna.

När ett reaktivt programmeringsspråk lägger till två variabler för att skapa en summa och en av de två variablerna ändras någon gång i framtiden, kommer summan också att ändras. Detta innebär att ett reaktivt program har förmågan att övervaka tillståndet för de data som används och att reagera automatiskt på förändringar, vilket potentiellt kan ändra det övergripande tillståndet för hela applikationen. Det finns flera modeller inom imperativ programmering, inklusive händelsebaserad programmering och observatörsdatamodeller, som kan utföra samma uppgifter genom att skapa strukturer som övervakar dataförändringar, men ett reaktivt språk skulle ha inbyggda mekanismer för att göra detta.

Användningen av ett reaktivt programmeringsspråk kan vara i områden där realtidstolkning av godtyckliga dataströmmar behövs. Detta kan inkludera vetenskaplig visualisering, grafiska användargränssnitt (GUI) eller till och med realtidskommunikation där programmet ständigt förändras baserat på den dataström som tas emot. Det bör dock noteras att det verkligen inte finns några fullt implementerade, oberoende reaktiva programmeringsspråk. De flesta fungerande implementeringar av konceptet har formen av externa bibliotek för mer traditionella imperativa eller funktionella språk.