Cela fait quelques années que j'entends parler de programmation fonctionnelle et que je tourne autour du sujet, lisant quelques articles, regardant quelques tutoriel, sans jamais y plonger réellement. Il faut dire que même si je me suis intéressé à quelques technologies comme Scala ou même Clojure, je suis aujourd'hui principalement un développeur front-end qui reste dans l'écosystème javascript. Ma curiosité a été encore plus attisée quand j'ai eu à travailler avec un ingénieur féru de fonctionnel (Karol, si tu me lis ! ;) ), et de nombreuses discussions que j'ai eu avec lui ont continué à faire évoluer mon "coding style" vers ce type de programmation.
Puis récemment, je suis tombé (pas totalement par hasard) sur ce livre de Dan Mantyla : "Functional Programming in Javascript". Curieux de voir ce que je pouvais en tirer pour m'améliorer encore, je l'ai rapidement téléchargé sur ma liseuse et je l'ai lu (dévoré ?) en moins d'une semaine. Donc concrètement, bon ou mauvais ouvrage ?
Commençons par ces points forts :
- L'ouvrage est plutôt pragmatique : il explique ce qui est faisable en javascript et quels sont les limites du système
- Il fournit quelques liens vers des librairies importants les concepts fonctionnels (Lazy.js et Bacon.Js, par exemple)
- Puis il détaille point par point les grands principes (functors, nomades) en les transcrivant en JS
- Il m'a mis le nez devant un petit détail : les promesses (dont je suis très fan) ne sont rien de plus que des monades... Moi qui avait du mal avec ce concept, je me rend compte qu'en fait je l'utilise naturellement depuis bien longtemps ^^
Pour moi, cet ouvrage ne manque que d'une chose : un réel exemple concret, sur une application classique, des apports du fonctionnels. Aujourd'hui, l'ouvrage donne les informations pour faire du fonctionnels en javascript et essaye d'en donner les raisons, mais les quelques exemples présent dans le livre sont trop réduit pour vraiment convaincre. Dommage !
Il ne me reste plus qu'à expérimenté de façon plus concrète ! Et étant donné que j'ai un nouveau projet où j'ai complètement les mains libres, plus d'excuse ;)