Co je reaktivní programování?
Reaktivní programování je koncept počítačové vědy, který popisuje vlastnosti počítačového programovacího jazyka zaměřeného na automatické udržování stavu aplikace při změně dat použitých v programu. Jedním z hlavních rysů reaktivního programovacího jazyka je to, že deklarované a vypočtené proměnné jsou neustále přehodnocovány jako jiné proměnné použité při jejich výpočtu. To znamená, že jazyk reaguje na změny stavu dat, na rozdíl od použití imperativnějších příkazů pro správu stavu, jak to činí mnoho tradičních programovacích jazyků. Teoretickým výsledkem aplikace využívající filozofie reaktivního programování by byl program, který neustále a automaticky mění zobrazení nebo jiné faktory na základě měnících se dat, která proudí do programu. Ačkoli lze k dosažení stejných výsledků jako reaktivní programování použít několik imperativních programovacích modelů, cílem vytvoření reaktivního jazyka by bylo mít nativní podporu reaktivních změn na primitivní úrovni, namísto na úrovni objektů.
Jedním ze způsobů, jak objasnit, jak reaktivní programování funguje, je porovnání s imperativním programováním. Když jsou dvě čísla přidána v imperativním jazyce, je výsledek přidání obvykle uložen v daném paměťovém místě. K operaci dojde ve chvíli, kdy je příkaz proveden, a výsledek je oddělen od dvou čísel, která byla přidána k vytvoření součtu. To znamená, že pokud se jedno z těchto dvou čísel, která byla přidána, změní po přidání, hodnota součtu by se nezměnila, protože je již uložena v paměti a oddělena od původních operandů.
Když reaktivní programovací jazyk přidá dvě proměnné k vytvoření součtu a jedna ze dvou proměnných se v budoucnu v budoucnu změní, pak se součet také změní. To znamená, že reaktivní program má schopnost sledovat stav použitých dat a automaticky reagovat na změny, což potenciálně mění celkový stav celé aplikace. Existuje několik modelů v imperativním programování, včetně programování založeného na událostech a datových modelů pozorovatelů, které mohou provádět stejné úkoly vytvářením struktur, které monitorují změny dat, ale reaktivní jazyk by měl k tomu vestavěné mechanismy.
Pro reaktivní programovací jazyk by mohlo být použito v oblastech, kde je zapotřebí interpretace libovolných datových toků v reálném čase. To by mohlo zahrnovat vědeckou vizualizaci, grafická uživatelská rozhraní (GUI) nebo dokonce komunikaci v reálném čase, ve které se program neustále mění na základě přijímaného datového toku. Je však třeba poznamenat, že ve skutečnosti neexistují žádné plně implementované, nezávislé reaktivní programovací jazyky. Většina pracovních implementací konceptu má podobu externích knihoven pro tradičnější imperativní nebo funkční jazyky.