La programación reactiva es un concepto de ciencias de la computación que describe las propiedades de un lenguaje de programación de computadoras enfocado en mantener automáticamente el estado de una aplicación a medida que cambian los datos usados en el programa. Una de las principales características de un lenguaje de programación reactivo es que las variables declaradas y calculadas se reevalúan constantemente a medida que cambian otras variables utilizadas en su 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 constante y automáticamente 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 imperativa para lograr los mismos resultados que la programación reactiva, el objetivo de crear un lenguaje reactivo sería tener soporte nativo para 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 lenguaje imperativo, el resultado de la suma generalmente se almacena en una ubicación de memoria determinada. La operación tiene lugar 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 cualquiera de los dos números que se agregaron cambia después de que se realiza la adición, el valor de la suma no cambiaría porque ya está almacenado en la memoria y 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 están utilizando y reaccionar automáticamente a los cambios, cambiando potencialmente el estado general de toda la aplicación. Hay varios modelos en la programación imperativa, incluida la programación basada en eventos y los modelos de datos del observador, que pueden realizar las mismas tareas mediante la creación de estructuras que monitorean los cambios en los datos, pero un lenguaje reactivo tendría mecanismos incorporados para hacer esto.
El uso de un lenguaje de programación reactivo podría estar en áreas en las que se necesita 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 según el flujo de datos que se recibe. Sin embargo, debe tenerse en cuenta que en realidad no existen lenguajes de programación reactiva independientes completamente implementados. La mayoría de las implementaciones de trabajo del concepto toman la forma de bibliotecas externas para lenguajes imperativos o funcionales más tradicionales.