O que é programação reativa?
A programação reativa é um conceito de ciência da computação que descreve as propriedades de uma linguagem de programação de computadores focada em manter automaticamente o estado de um aplicativo à medida que os dados usados no programa são alterados. Uma das principais características de uma linguagem de programação reativa é que variáveis declaradas e calculadas são constantemente reavaliadas como outras variáveis usadas em sua alteração de cálculo. Isso significa que a linguagem reage às mudanças no estado dos dados, em vez de usar comandos mais imperativos para gerenciar o estado, da mesma forma que muitas linguagens de programação tradicionais. O resultado teórico de uma aplicação que emprega filosofias de programação reativa seria um programa que muda constante e automaticamente a exibição ou outros fatores com base nas mudanças de dados que estão fluindo para o programa. Embora vários modelos de programação imperativos possam ser usados para obter os mesmos resultados que a programação reativa, o objetivo de criar uma linguagem reativa seria ter suporte nativo para mudanças reativas no nível primitivo, em vez de no nível do objeto.
Uma maneira de ajudar a esclarecer como a programação reativa funciona é compará-la à programação imperativa. Quando dois números são adicionados em uma linguagem imperativa, o resultado da adição geralmente é armazenado em um determinado local da memória. A operação ocorre no momento em que o comando é executado e o resultado é dissociado dos dois números que foram adicionados para criar a soma. Isso significa que, se um dos dois números adicionados for alterado após a adição, o valor da soma não será alterado porque ele já está armazenado na memória e separado dos operandos originais.
Quando uma linguagem de programação reativa adiciona duas variáveis para criar uma soma e uma das duas variáveis muda em algum momento no futuro, a soma também mudará. Isso implica que um programa reativo tem a capacidade de monitorar o estado dos dados que estão sendo usados e reagir automaticamente a alterações, potencialmente alterando o estado geral de todo o aplicativo. Existem vários modelos na programação imperativa, incluindo a programação baseada em eventos e os modelos de dados do observador, que podem executar as mesmas tarefas criando estruturas que monitoram as alterações de dados, mas uma linguagem reativa teria mecanismos internos para fazer isso.
O uso de uma linguagem de programação reativa pode estar em áreas nas quais a interpretação em tempo real de fluxos de dados arbitrários é necessária. Isso pode incluir visualização científica, interfaces gráficas de usuário (GUIs) ou até comunicações em tempo real nas quais o programa muda constantemente com base no fluxo de dados recebido. Deve-se notar, no entanto, que realmente não existem linguagens de programação reativas independentes totalmente implementadas. A maioria das implementações de trabalho do conceito assume a forma de bibliotecas externas para linguagens imperativas ou funcionais mais tradicionais.