Focus sur le reactive programming

Reactive programming : paradigme de programmation basé sur la transmission de données à partir d'une source unique ou de plusieurs sources. La plupart des applications du moment sont suivent ce paradigme, autrement dit elles réagissent aux événements qui leur parviennent et y réagissent par des calculs. Comment et pourquoi ? C'est la question du jour.

La programmation réactive ou Reactive Programming est un courant de programmation qui commence à se faire une place dans l’univers du développement. Face à la complexité des SI et des exigences des utilisateurs finaux, il est grand temps de repenser les paradigmes de programmation pour gagner en productivité et en qualité de produits. Les systèmes impératifs laissent alors place aux systèmes réactifs qui offrent davantage de flexibilité, de fiabilité et de disponibilité. Mais concrètement, de quoi parle-ton ? Focus sur ce concept qui a tout le potentiel pour devenir un standard dans les années à venir.


En quoi consiste le Reactive Programming ?

Entre la définition plus ou moins générique de Wikipédia ou l’approche trop canonique de Stackoverflow, les Internets regorgent d’essais de définition du Reactive Programming qui n’aident pas les néophytes. La programmation réactive est un paradigme de programmation qui repose sur l’émission asynchrone de données. Toutes les données sont alors traitées à travers un flux. Ce flux émet une valeur, une erreur et un signal en cas d’absence de données à envoyer.

Dans la programmation réactive, le flux de données ou data stream devient l’épine dorsale de l’application. Comme son nom le suggère, le Reactive Programming consiste à réagir face à ces « messages » véhiculés par les flux de données. Tous les évènements possibles doivent être envisagés et pris en compte dans la programmation réactive.

La variation dans le temps est également une notion importante du Reactive Programming. En effet, les valeurs varient dans le temps lorsque le programme s’exécute et chaque expression du programme doit être correcte en toutes circonstances. En outre, lorsque la valeur d’une variable change, les autres variables qui en dépendent doivent être tenues à jour. Le suivi des dépendances existantes et des éventuelles nouvelles dépendances est donc l’un des points importants de ce paradigme.

De nos jours, dans le monde professionnel, les systèmes réactifs sont mis en place par les entreprises à tous les niveaux, notamment dans les interfaces graphiques. Les applications réactives sont capables de fournir de meilleures réponses aux évènements grâce aux calculs, ainsi les utilisateurs finaux améliorent leur expérience. Côté Front avec React.JS par exemple ou Spring Reactor côté Back.


Les avantages et les limites de la programmation réactive

Le principal atout de la programmation réactive est la minimisation des bugs. Les oublis de mise à jour ne peuvent plus déboucher sur des défauts de fonctionnement. Cela permet de gagner du temps lors de l’exécution, permettant de se focaliser sur des tâches à plus forte valeur ajoutée.

Au niveau de l’application, la programmation réactive permet d’écrire beaucoup plus facilement, ce qui permet au développeur de se délester de la préoccupation de l’ordre de déclenchement des évènements par exemple. Facilité

Par ailleurs, les applications réactives peuvent gagner en résilience à mesure qu’elles évoluent sachant que le système reste disponible même en cas d’erreur ou de surcharge.

Certes si la programmation réactive répond aux exigences actuelles du marché, ce concept se heurte à quelques freins. En effet, la programmation réactive reste assez difficile à mettre en pratique sachant que les approches traditionnelles sont très différentes. Le côté asynchrone de la programmation rend les flux un peu plus difficiles à suivre et à comprendre. Sans parler de la complexité du déchiffrement du compilateur. Tous ces défis doivent être relevés pour que le Reactive Programming puisse s’imposer comme une alternative solide et éventuellement devenir un standard.


Par Baptiste.casnedi