¿Qué es y para qué sirve la programación reactiva? 

La programación reactiva es una faceta importante del desarrollo de software moderno. Se describe con frecuencia como un paradigma de la programación, que se concentra en el desarrollo de aplicaciones de software robustas que pueden hacerse cargo de datos asincrónicos y propagación de cambios. Además, permite a los programadores realizar aplicaciones escalables y fáciles de mantener que se acoplan a un entorno dinámico. 

Así la programación reactiva es un enfoque para construir software que modela la entrada/salida como flujos de eventos. Con ella los desarrolladores pueden componer y trabajar con aplicaciones de manera declarativa y funcional, estandarizando el estilo.

Los flujos de eventos ofrecen un medio claro y portable de representar flujos de datos. Esto hace que el código sea declarativo en lugar de imperativo, lo cual es una gran ventaja para la composición y la comprensión, los sistemas reactivos están diseñados para manejar flujos de manera asincrónica, lo que los hace muy escalables y adaptables para optimizar la concurrencia.

Sin embargo, la programación activa tiene una curva de aprendizaje significativa y puede ser tentador verla como una solución para todos los problemas, aunque cuando se aplica correctamente puede ser muy efectiva.

En un sistema reactivo los datos fluyen en secuencias de eventos a lo largo del tiempo. Sus principios son:

  • Flujos de datos que es el concepto central de este tipo de programación. Son secuencias de eventos que se dan durante un lapso de tiempo, es el caso de lecturas de sensores y entradas de usuarios. Las transmisiones se combinan y transformar para dar lugar a nuevas transmisiones, con lo cual los desarrolladores realizan aplicaciones dinámicas y complejas.
  • Observables. Los observables se refieren a objetos que representan flujos de datos. Brinda una manera de crear y suscribirse a flujos de datos en un sistema reactivo. Así, las observables funciones como enlaces de datos y los consumidores de datos.
  • Observadores. Se refieren a entidades que se suscriben a observables y reaccionan a las variaciones de flujo de datos. Determinan las acciones que se deben realizar en caso de que lleguen nuevos datos o se dé un error. Son como consumidores de datos que brindan los observables.
  • Operadores. Son funciones que les dan la posibilidad a los desarrolladores de transformar y manipular flujos de datos. Se emplean para filtrar, modificar y fusionar flujos de datos, lo que permiten nuevos flujos que satisfacen las necesidades específicas. 

Entre los beneficios de la programación reactiva en comparación con los modelos de programación imperativa tradicional, están:

  • Escalabilidad mejorada. Debido a que pueden manejar una gran cantidad de eventos de forma simultánea.
  • Mantenibilidad mejorada. Al tener un estilo declarativo, apoya a los desarrolladores a expresar la intención de la aplicación con claridad. Dicho enfoque crea un código limpio y fácil de mantener, lo que hace más sencilla su comprensión y resolución de problemas.
  • Mayor capacidad de respuesta. Este tipo de programación está diseñado para hacerse cargo de eventos sincrónicos y responder con mayor agilidad a cambios. 
  • Manejo sólido de errores. Debido a que los errores se propagan mediante flujos de datos, es posible manejar de manera centralizada.

Existen numerosos marcos y motores de programación reactiva, con RxJS siendo uno de los más populares en JavaScript. También hay marcos específicos para diferentes idiomas y plataformas, como RxJava para Java y ReactiveX para .NET.

En conclusión, la programación reactiva ofrece un modelo poderoso para la creación de aplicaciones, especialmente en el desarrollo en tiempo real. Conforme se adopta este estilo de programación, la forma de pensar los eventos y flujos de datos se transforma, lo que abre nuevas posibilidades para la composición y creación de aplicaciones robustas. 

https://www.infoworld.com/article/3701889/what-is-reactive-programming-programming-with-event-streams.html