Programación reactiva

La programación reactiva  es un paradigma de programación centrado en el flujo de datos y la propagación de cambios. Esto significa que debe ser posible expresar fácilmente flujos de datos estáticos y dinámicos, y que el modelo de ejecución subyacente debe propagar automáticamente los cambios a través del flujo de datos.

Por ejemplo, en la programación imperativa, la asignación a = b + csignificará que a la variable ase le asignará el resultado de la operación b + cutilizando los valores actuales (en el momento del cálculo) de las variables. Posteriormente, los valores de las variables by cse pueden cambiar sin ningún efecto sobre el valor de la variable a.

En la programación reactiva, el valor ase recalculará automáticamente en función de los nuevos valores.

Los procesadores de hojas de cálculo modernos son un ejemplo de programación reactiva. Las celdas de la tabla pueden contener valores de cadena o una fórmula como "=B1+C1", cuyo valor se calculará en función de los valores de las celdas correspondientes. Cuando se cambia el valor de una de las celdas dependientes, el valor de esa celda se actualizará automáticamente.

Otro ejemplo son los lenguajes de descripción de hardware (HDL) como Verilog . La programación reactiva le permite modelar cambios a medida que se propagan dentro de un modelo.

La programación reactiva se ha propuesto como una forma de crear fácilmente interfaces de usuario, animaciones o simulaciones de sistemas variables en el tiempo.

Por ejemplo, en la arquitectura MVC , mediante la programación reactiva, puede implementar la reflexión automática de los cambios de Modelo a Vista y viceversa de Vista a Modelo.

Conceptos

Enfoques reactivos de la programación

Programación Reactiva Imperativa

Es posible combinar los paradigmas de programación reactiva e imperativa. En tal paquete, los programas imperativos podrían funcionar en estructuras de datos reactivas.

Programación reactiva orientada a objetos

La programación reactiva orientada a objetos (OORP) es una combinación de un enfoque orientado a objetos con uno reactivo. Probablemente, la forma más natural de hacer esto es que, en lugar de métodos y campos, los objetos tienen reacciones que recalculan automáticamente los valores, y otras reacciones dependen de los cambios en esos valores.

Programación Reactiva Funcional

La programación funcional es la base más natural para implementar una arquitectura reactiva, combinando bien con la concurrencia .

La Programación Reactiva Funcional (FRP) se formó en 1997, con la propuesta del lenguaje Fran [1] . Más tarde, se desarrollaron lenguajes como Fruit, FRP y RT-FRP, FAL, Frob, Fvision, Yampa [2] .

La expresión reactiva funcional más simple tiene la siguiente forma [3] :

b1 ` hasta ` e => b2

que literalmente significa " comportarse como b1antes de que ocurra el evento e, después de eso comportarse comob2 ".

Implementaciones

  • Elm  es un lenguaje de programación reactivo funcional que se compila en HTML , CSS y JavaScript .
  • Flapjax  - lenguaje reactivo a eventos para programar aplicaciones web
  • ReactiveX  es una implementación multiplataforma de programación reactiva para Java , JS , C# , Scala , Clojure , Swift y más.
  • Reactive.jl  - Implementación de FRP para Julia
  • ObservableComputations es una implementación multiplataforma para .NET

Enlaces

  1. Animación reactiva funcional . Consultado el 8 de septiembre de 2015. Archivado desde el original el 11 de noviembre de 2020.
  2. Mun Hong Cheong. Programación Funcional y Juegos 3D . — Universidad de Nueva Gales del Sur, 2005.
  3. Paul Hudak. Herramientas y lenguajes específicos de dominio modular . — IEEE Computer Society Press, Departamento de Ciencias de la Computación, Universidad de Yale, 1998. Archivado desde el original el 17 de octubre de 2013.