profitez des avantages de la programmation fonctionnelle ... · programmation fonctionnelle. on...

4
Meilleure montée en charge, moins de code et moins de bugs avec le style « Functional Programming » Profitez des avantages de la programmation fonctionnelle dans votre langage habituel Mastering Software Development

Upload: others

Post on 01-Aug-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Profitez des avantages de la programmation fonctionnelle ... · programmation fonctionnelle. On peut aussi noter que le nom du fameux algorithme « map-reduce », omniprésent pour

Meilleure montée en charge, moins de code et moins de bugs avec le style « Functional Programming »

Profitez des avantages de la programmation fonctionnelle dans votre langage habituel

Mastering Software Development

Page 2: Profitez des avantages de la programmation fonctionnelle ... · programmation fonctionnelle. On peut aussi noter que le nom du fameux algorithme « map-reduce », omniprésent pour

FP-Style : Les avantages sans changer de langage

Nos habitudes de programma-tion sont depuis longtemps liées à l’architecture tradi-tionnelle des microprocesseurs où les tâches sont exécutées en séquence, à des fréquences toujours croissantes.

Ce style de programmation est désormais remis en question car les processeurs atteignent leurs limites en fréquence. Ils offrent en contrepartie un nombre croissant de cœurs capables de travailler en parallèle. On parle alors de montée en charge sur les multi-cœurs.

Pour les applications qui exigent une montée en charge importante, on retrouve une problématique similaire, mais entre nœuds distribués sur un réseau plutôt qu’entre cœurs dans une même puce. On parlera alors par exemple d’algorithmes distribués de type « map-reduce ».

Une autre façon de penser le code

Or, écrire des logiciels capables d’exploiter tous ces cœurs exige un véri-table changement de style de programmation, et cela ex-plique l’engouement pour la programmation fonctionnelle (FP) que l’on observe actuel-lement, avec l’arrivée de langages tels que Clojure, Scala et F#, Groovy, Kotlin et Ceylon qui embrassent la programmation fonctionnelle. On peut aussi noter que le

nom du fameux algorithme « map-reduce », omniprésent pour la montée en charge dite « horizontale », provient directement des deux fonctions « map » et « reduce » typiques de la programmation fonction-nelle.

Pas besoin de changer de langage !

Vous avez choisi Java ou C# pour vos projets ? Si ces langages orientés objet ne sont pas réputés pour leurs possibilités en programma-tion fonctionnelle, il est tout à fait possible de programmer en Java ou C# dans un style fonctionnel. C’est même une excellente idée, et pas seulement pour la montée en charge :

• Propre : le style de programmation fonction-nel réduit la proportion de défauts en s’imposant des règles telles que l’interdic-tion de modifier l’état d’un objet ou l’obligation de garantir qu’une fonction ne doit avoir aucun impact sur le reste du programme.

• Testable : le style de programmation fonctionnel favorise des fonctions pures qui manipulent de simples valeurs et qui sont donc extrêmement faciles à tester en isolation.

• Économique : le style de programmation fonction-nel permet d’écrire moins de code pour obtenir un même résultat en fac-

torisant des portions de code réutilisables d’une façon plus agressive qu’en programmation objet clas-sique ; cette réduction de la taille du code réduit encore davantage le nombre de défauts d’un programme.

• Évolutivité du design : le style de programma-tion fonctionnel simplifie le design et permet donc de raisonner plus efficacement sur les changements à apporter, par exemple pour distribuer un traite-ment entre plusieurs cœurs ou machines, ou pour optimiser les performances d’un calcul en particulier.

• Abordable : le style de programmation fonctionnel n’est pas du tout incompa-tible avec l’approche objet, et peut être mis en œuvre progressivement, sur du nouveau code ou sur du code legacy.

Vous n’avez pas besoin de changer de langage pour bénéficier de tous ces avantages. Il suffit d’apprendre à penser de façon fonction-nelle, ce qui n’est pas difficile, et de bien comprendre l’inté-rêt de s’imposer une discipline supplémentaire en intervenant sur le code.En Java, le recours à une librairie extérieure telle que Google Guava s’impose néan-moins, tandis qu’en C# le langage fournit toutes les constructions nécessaires avec en particulier les lambdas.

Vous entendez parler de plus en plus souvent de programmation fonctionnelle, et c’est normal puisque ce style de programmation est essentiel pour profiterdesprocesseursmulti-coeurs.Maisdevez-vous changer de langage pour cela ?

Page 3: Profitez des avantages de la programmation fonctionnelle ... · programmation fonctionnelle. On peut aussi noter que le nom du fameux algorithme « map-reduce », omniprésent pour

Adopter le style FP, c’est améliorer la qualité du code et du design

• Vous êtes engagés dans une démarche d’amélioration de la qualité de code, par exemple selon les principes Clean Code ?

• Vous pressentez de fortes évolutions de design autour de sujets comme la montée en charge, la distribution de l’application sur plusieurs machines, l’ajout de caches, la mise en œuvre de solutions NoSQL ou CQRS ?

• Vous rencontrez des difficultés à démêler les différents composants de votre application legacy ?

L’introduction progressive du style de programmation fonctionnel va vous aider à mettre de l’ordre dans votre code grâce à quelques principes simples et puissants, et cela sans changer de langage.

Tout comme d’autres techniques, comme les tests unitaires ou le TDD dont on ne peut plus se passer une fois bien comprises, le style fonctionnel peut discrètement changer profondément la qualité de code et de design de votre équipe.

4 principes pour introduire le style FP dans votre équipe :

1Formez vos développeurs lors d’une session initiale sur les techniques typiques de la pro-

grammation fonctionnelle. Cette formation est nécessaire mais pas suffisante, il faudra aussi pratiquer pour bien assimiler les principes de ce style et comment les mettre en pratique.

2Organisez un atelier sur le style FP en interne, organisé par un ou plusieurs experts selon la

taille et l’expérience de l’équipe. Cela permet de s’initier de façon idéale, hors des contraintes et de la pression d’un vrai projet.

3Organisez des exercices collectifs de mise en œuvre du style FP sur des portions de votre

application. Cela peut prendre la forme d’un ran-dori où un binôme travaille sur grand écran devant le reste de l’équipe qui observe, ou simplement en plusieurs binômes avec l’aide d’un facilitateur.

4Gardez un œil sur les nouveaux langages . Le style FP consiste à s’imposer des contraintes

fortes de style et donc de discipline pour des bénéfices immédiats dans votre code neuf ou legacy. C’est également une excellente façon de se préparer à l’avenir des langages de programmation, car si l’on ignore aujourd’hui quels seront les prochains langages majeurs de demain, il est certain qu’ils seront tous fortement orientés vers la programmation fonctionnelle.

Business CaseUne place de marché d’instruments dérivés en finance doit gérer un grand nombre d’ordres dans un marché volatile qui se traduisent ensuite par des exécutions puis des confirmations. L’application initiale en Java entreprise avec beaucoup de multi-threading ne garantit pas des temps de réponse faibles et souffre d’un nombre élevé de bugs.

Lors de la reprise en main du code existant, un style fonctionnel a été mis en œuvre systématiquement, avec des classes toutes immuables sauf une exception, et ce tout au long du workflow de l’ordre initial jusqu’aux exécutions et confirmations. L’introduction du style FP s’effectue par l’exemple directement sur le projet, les développeurs comprennent vite les avantages en qualité et en réduction de l’effort de maintenance.

L’utilisation du style FP dans ce projet a été un élément essentiel pour garantir un comportement déterministe, ainsi que pour garantir une traçabilité totale et infalsifiable des événements de trading.

Page 4: Profitez des avantages de la programmation fonctionnelle ... · programmation fonctionnelle. On peut aussi noter que le nom du fameux algorithme « map-reduce », omniprésent pour

21, rue du Bouloi75001 PARIS

Tél: 01.75.50.49.20

[email protected]

Mastering Software Development

Contactez-nous sans attendre pour profiter des progrès de l’état de l’art :CyrilleMartraire, Associé, Directeur Technique : [email protected]

Jonathan Salmona, Directeur Commercial : [email protected]

Techniques associées

Le style fonctionnel est encore peu répandu en pratique et peut donc apporter beaucoup à une équipe, en complément et non en

remplacement des autres techniques d’ingénierie telles que le TDD, les principes de faible couplage et de forte cohésion, le pair-pro-gramming et toutes les techniques de test automatisé telles que BDD.

Arolla pour vous aider

Notre métier est d’être à jour et de vous accompagner lors de la mise en application grâce à nos retours d’expériences.