Reactive Programming
Reactive Programming (RP) ou Programação Reativa é um paradigma declarativo de programação preocupado com fluxo de dadoss e propagação de mudanças.
Para endenter a definição de PR considere o seguinte código JavaScript que utiliza a programação imperativa tradicional:
let a = 10
let b = 20
let c = a + b
a = 15
Na programação imperativa um programa é formado por uma sequência de instruções que o programa deve executar. Assim, o comando let c = a + b
é naturalmente compreendido como "o valor da variável c será a soma dos valores das variáveis a e b" no momento em que o comando for executado. A alteração do valor da variável a para 15 não causará alteração no valor da variável c.
Na PR a instrução let c = a + b
deve ser compreendida como sendo a definição de que o valor da variável c depende do valor das variáveis a e b. Sempre que o valor de a ou de b for alterado o valor de c será "automaticamente" atualizado. Este princípio é bastante natural, pora exemplo, quando pensamos em planilhas eletrônicas: o valor de uma célula pode ser o resultado da aplicação de uma função que utiliza os valores de outras células.
Em aplicações complexas do tipo big data o cenário mais comum envolve dois conceitos:
- fluxo de dados
- assincronicidade dos dados
Os clientes, sejam eles pessoas ou dispositivos (Internet das Coisas) atuam enviando um fluxo de dados ao longo do tempo. Estes dados, que poderíamos chamar de eventos, precisam ser processados no lado servidor.
O fluxo de dados tipicamente é assíncrono. Não há como prever quando os dados serão enviados para processamento. Um fluxo de dados é como se fosse um array de dados dispostos ao longo do tempo e não do espaço (de memória).
Leitura Obrigatória |
---|
Definição |
Post: The introduction to Reactive Programming you've been missing por André Staltz |
Artigo: Dynamics of Change: Why Reactivity Matters |
Leitura Sugerida |
---|
Post: Reactive Programming vs. Reactive Systems |