Dernière mise à jour le .

Compte rendu d'un meetup sur la programmation fonctionnelle.

J'ai assisté a une conférence sur la programmation fonctionnelle, présenté par Xavier DETANT et intitulé De Javascript à Haskell : la programmation fonctionnelle expliquée simplement.

Le cours se présente sous la forme d'un exercice de live coding en javascript et en TDD (Test Driven Developement) où le speaker part d'un code itératif et le rend totalement fonctionnel.

Dans un premier temps il se contente d'augmenter beaucoup la complexité pour faire assimiler une partie des notions de programmation fonctionnelle (first class citizen function, application partielle, higher order function ...) puis, dans un second temps, une fois le code devenu bien indigeste, il applique d'autres notions (lambda calcul, currying, composition ...) afin de factoriser le tout pour le rendre dense mais simple.

En dernière partie, pour aller plus loin, Xavier converti le code js précédent en code Haskell afin d'illustrer que du code totalement fonctionnel n'a besoin que de très peu de modifications pour le passer d'un language à un autre en plus de présenter la puissance et les intérêt de ces languages uniquement faits pour faire du fonctionnel (et utiles en data science par exemple).

Et, bien sûr, ce talk s'est fini sur le traditionnel apéro bière/charcuterie pour échanger avec le conférencier et/ou les personnes présentes.

Personnellement, faisant déjà de la programmation fonctionnelle à un moindre niveau, j'ai trouvé ce talk très intéressant. Il m'a permis de clarifier certaines notions tel que le currying, l'application partielle ou les higher order functions que j'utilise déjà, parfois sans le savoir, et d'autre fois, sans vraiment comprendre la raison ou l'intérêt.

La programmation fonctionnelle, qui est un concept qui existe depuis au moins 30 ans, ne l'oublions pas, et qui a été laissée de côté au profit de la programmation impérative - plus intuitive et plus accessible, revient beaucoup à la mode aujourd'hui pour sa capacité de parallélisation. Pas d'états, donc pas de changement d'état à partager donc un code facile à "multi-threader". D'où son importance en data science.

Bref, mes collègues n'ont pas finit d'en entendre parler.