SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Vous commencez à en entendre parler de plus en plus mais vous avez encore du mal à voir ce que c’est et à comprendre de que ça change concrètement, ce talk est fait pour vous !!!
La programmation fonctionnelle est une manière de programmer basée sur les fonctions qui permet de faire du code vraiment modulaire, améliorer la qualité et limiter les bugs. Vous ne me croyez pas ? Venez voir cette session !
Vous commencez à en entendre parler de plus en plus mais vous avez encore du mal à voir ce que c’est et à comprendre de que ça change concrètement, ce talk est fait pour vous !!!
La programmation fonctionnelle est une manière de programmer basée sur les fonctions qui permet de faire du code vraiment modulaire, améliorer la qualité et limiter les bugs. Vous ne me croyez pas ? Venez voir cette session !
4.
High-order function
Pure function
Immutable
Functor
Currying
Monad
Applicative
Récursif
Monoid
5.
Au fait, c’est quoi la programmation fonctionnelle ?
“La programmation fonctionnelle est un paradigme de programmation qui
considère le calcul en tant qu'évaluation de fonctions mathématiques.”
Wikipedia
“La programmation fonctionnelle est un style de programmation qui met l’accent
sur les fonctions qui ne dépendent pas de l’état du programme.”
Functionnal programming in scala
“La programmation fonctionnelle permet de coder de manière plus productive,
plus modulaire et avec moins de bugs.”
Loïc Knuchel ;)
20.
Fonctionnel
● Immutabilité
● Stateless
● Pas d’effet de bord
Effet de bord :
● faire un appel (bdd, http, fichier…)
● récupérer la date actuelle
● accéder à une variable “globale”
● modifier un paramètre
● lancer une exception
● afficher un log
● ...
21.
Fonctionnel
● Immutabilité
● Stateless
● Pas d’effet de bord
Raisonnement local
Couplage réduit
Composition facilitée
Testabilité
22.
Fonctionnel
● Immutabilité
● Stateless
● Pas d’effet de bord
Functional core / Imperative shell
23.
Fonctionnel
● Immutabilité
● Stateless
● Pas d’effet de bord
● Décomposer en fonction réutilisables
51.
Take away
● Paramètre de fonction plutôt que donnée globale (même de classe)
● Créer des objets plutôt que de les modifier (immutable)
● Option plutôt que ‘null’
● Option / Try / Either / Validation plutôt qu’une exception
● Collection API / récursivité plutôt que boucles for/while
● Eviter les ‘if’ autant que possible
● Séparation technique / métier
● Functionnal core / Imperative shell
52.
Références
Does the Language You Use Make a Difference ?
When DDD meets FP, good things happen
Philosohie fonctionnelle
Ur Domain Haz Monoids (vidéo)
DDD: et si on reprenait l'histoire par le bon bout ?
DDD, en vrai pour le développeur
Functional programming Illustrated by Scala
Scala School!