August 16, 2022

Blog

programacion reactiva

Programación Reactiva

Autor: Jorge Mendiola

La programación reactiva es un paradigma de programación del cual seguramente ya han escuchado hablar. Es común que este paradigma se mezcle con el de programación orientada a objetos y con el paradigma funcional.

La programacion reactiva tiene dos objetivos principales:

  • Propagar los cambios que ocurren sobre las variables del sistema de manera rápida y sin mucho esfuerzo.
  • Trabajar con flujos asíncronos de datos.

 

Veamos algunos ejemplos, para ilustrar ambos objetivos. Para el caso de propagación de cambios, imaginemos una hoja de cálculo en la que tomamos una celda y colocamos una fórmula en la que depende de valores de otras dos celdas. Luego cuando colocamos los valores en las celdas que participan de la fórmula automáticamente cambia el valor resultado de la fórmula en esa celda. Haciendo que efectivamente los cambios se propaguen en nuestro sistema.

 

Para comprender el segundo objetivo, imaginemos una hoja en el procesador de texto y cada vez que presionamos una tecla está enviando un dato, entonces el procesador de texto reacciona de acuerdo a como ha sido programado. En este caso colocar la letra donde corresponde. Este flujo es asíncrono debido a que el programa no sabe cuando vamos a escribir la siguiente letra.  

 

Si estás familiarizado con la programación orientada objetos te darás cuenta que este paradigma está fuertemente relacionado con el de observer y observable.

 

Es común cuando buscamos por internet sobre programación reactiva nos encontremos con la mezcla de dos paradigmas, el funcional y reactivo. Que NO es lo mismo que la programación reactiva. La programación funcional por sí misma merece su propio artículo ya que amerita una explicación muchísimo más amplia. Pero basta con decir que la programación funcional reactiva nos permite filtrar, transformar y resumir los flujos de datos asíncronos para obtener otros tipos de datos que sirvan para nuestra aplicación. Pensando en el ejemplo del procesador de texto, se podría utilizar cuando se realiza una combinación de teclas y el mismo no sabe interpretarlas por lo que se termina filtrando esa combinación. 

 

Una de las cosas que me resultaron confusas al principio cuando comencé a estudiar y a analizar este paradigma es el siguiente diagrama:

 

En donde aparece en la parte superior el flujo o los flujos de datos provenientes de cualquier fuente, en el medio la operación que se le está aplicando al flujo y debajo el flujo resultante, solamente de eso se trata. Se pueden ver estos diagramas de manera interactiva en rxviz.com o en rxmarbles.com.

 

Ahora algunos lenguajes de programación ya proveen la forma de implementar la programación reactiva, pero por qué no tomar ventaja de lo que la comunidad ya ha probado y desarrollado de manera exitosa? en este caso me refiero a una API llamada como las extensiones reactivas o reactive extension o Rx simplemente. Esta implementación de la programación reactiva nos permite crear y consumir flujos de datos de manera sencilla y uniforme. La sintaxis cambia pero los conceptos se mantienen. 

 

Es bueno mencionar que aunque entendamos para que se usa y sepamos que existan las librerías no significa que lo debemos usar en cada lugar donde estemos desarrollando. Por lo que debemos considerar que la programación reactiva como tal es una herramienta y siempre hay que intentar encontrar la mejor herramienta para el trabajo que vamos a realizar. 

 

Veamos algunos casos donde es conveniente utilizar la programación reactiva. El primer caso es cuando el usuario interactúa con una interfaz gráfica. Otro buen candidato para ser modelado con programación funcional reactiva son aplicaciones en las que trabajen con datos en tiempo real por ejemplo la lectura de un termómetro o un sismógrafo, o de inmensa cantidad de datos que se obtienen a través de los sensores de los auto autónomos. El tercera y último caso podría darse cuando trabajamos con flujos interminables de datos, como por ejemplo, la cantidad de twits que existen y que se crean día a día o las transferencias bancarias que ocurren a lo largo de una semana.

 

Bueno eso es todo, espero que les haya gustado el artículo tanto como a mi escribirlo. En el próximo artículo intentaré dar un ejemplo paso a paso de como utilizar esta librería. Hasta la próxima.

 

Facebook
LinkedIn