¿Qué es la programación reactiva?
La programación reactiva es un concepto de informática que describe las propiedades de un lenguaje de programación centrado en mantener automáticamente el estado de una aplicación a medida que cambian los datos utilizados en el programa. Una de las características principales de un lenguaje de programación reactivo es que las variables declaradas y calculadas se reevalúan constantemente a medida que otras variables se usan en su cambio de cálculo. Esto significa que el lenguaje reacciona a los cambios en el estado de los datos, en lugar de usar comandos más imperativos para administrar el estado, como lo hacen muchos lenguajes de programación tradicionales. El resultado teórico de una aplicación que emplea filosofías de programación reactiva sería un programa que cambia de manera constante y automática la pantalla u otros factores en función de los datos cambiantes que fluyen hacia el programa. Aunque se pueden usar varios modelos de programación imperativos para lograr los mismos resultados que la programación reactiva, el objetivo de crear un lenguaje reactivo sería tener un soporte nativo para los cambios reactivos a nivel primitivo, en lugar de a nivel de objeto.
Una forma de ayudar a aclarar cómo funciona la programación reactiva es compararla con la programación imperativa. Cuando se agregan dos números en un idioma imperativo, el resultado de la suma generalmente se almacena en una ubicación de memoria dada. La operación se lleva a cabo en el momento en que se ejecuta el comando, y el resultado se desacopla de los dos números que se agregaron para crear la suma. Esto significa que, si alguno de los dos números que se agregaron cambia después de la adición, el valor de la suma no cambiaría porque ya está almacenado en la memoria y está separado de los operandos originales.
Cuando un lenguaje de programación reactivo agrega dos variables para crear una suma y una de las dos variables cambia en algún momento en el futuro, entonces la suma también cambiará. Esto implica que un programa reactivo tiene la capacidad de monitorear el estado de los datos que se utilizan y reaccionar automáticamente a los cambios, lo que podría cambiar el estado general de toda la aplicación. Existen varios modelos en la programación imperativa, incluida la programación basada en eventos y los modelos de datos de observación, que pueden realizar las mismas tareas creando estructuras que monitorean los cambios en los datos, pero un lenguaje reactivo tendría mecanismos incorporados para hacerlo.
El uso de un lenguaje de programación reactivo podría ser en áreas en las que se necesita la interpretación en tiempo real de flujos de datos arbitrarios. Esto podría incluir visualización científica, interfaces gráficas de usuario (GUI) o incluso comunicaciones en tiempo real en las que el programa cambia constantemente en función del flujo de datos que se recibe. Cabe señalar, sin embargo, que realmente no hay lenguajes de programación reactivos independientes totalmente implementados. La mayoría de las implementaciones funcionales del concepto toman la forma de bibliotecas externas para lenguajes imperativos o funcionales más tradicionales.