BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Interviews Damien Gouyette nous présente la programmation fonctionnelle en Java

Damien Gouyette nous présente la programmation fonctionnelle en Java

Favoris
   

1. InfoQ: Bonjour Damien. Merci d'avoir accepté cette interview pour InfoQ dans le cadre du breizhcamp. Peux-tu te présenter pour ceux qui ne te connaissent pas ?

Damien: Je suis Damien GOUYETTE, expert développeur Java depuis une dizaine d'années, indépendant depuis 2011 et je fais également parti du groupe leszindeps.

   

2. InfoQ: La programmation fonctionnelle est au goût du jour, et les développeurs Java ne peuvent l’ignorer désormais avec l’arrivée des lambdas dans Java 8. Tout d’abord, peux-tu nous présenter ce qu’est la programmation fonctionnelle ?

Damien: Pour moi la programmation fonctionnelle c'est un ensemble de concepts sur lequel je ne mettais pas de nom auparavant. Au fur et à mesure de mon expérience en développement Java j'avais tendance à appliquer un certain nombre de bonnes pratiques sans savoir que c'était de la programmation fonctionnelle. J’écrivais de petites fonctions Java, facilement testables en évitant de modifier tout ce qui est en dehors de la fonction. Au final ce sont sur ces choses que se base la programmation fonctionnelle. Donc pour moi la programmation fonctionnelle c'est un certain nombre de bonnes pratiques sur lesquels on ne met pas de nom mais qui ont tendances à rendre le code facilement testable, à éviter les perturbations extérieures sur le code et d'autres choses comme cela.

   

3. InfoQ: Le premier pas dans la programmation fonctionnelle semble difficile à faire pour de nombreux développeurs. Quels sont les avantages à franchir ce pas ?

Damien: Justement moi c'est toujours l’approche que j'ai eu par rapport à la programmation fonctionnelle : j'ai toujours tâtonné sur certains concepts de programmation Java. Après c'est en ayant vraiment suivi des formations fonctionnelles comme par exemple la formation sur Scala de Martin Odersky sur Coursera que j'ai vu ce que pouvait être la programmation fonctionnelle et que je me rendais compte que j'avais déjà adopté ce genre de bonnes pratiques. Donc je pense que pour les développeurs, une fois que l'on est déjà habitué à faire du TDD par exemple, suivre une formation fonctionnelle (j'encouragerais par exemple de la suivre sur Coursera par exemple). Cela ne peut qu'aider à faire avancer et faire rentrer des concepts théoriques sur la programmation fonctionnelle. Donc je conseille de suivre ce genre de cursus.

   

4. InfoQ: La programmation fonctionnelle est une approche particulière pour résoudre un problème. Penses-tu que tout devrait devenir programmation fonctionnelle ou seulement certaines problématiques ? Pourrais-tu nous donner un cas d’utilisation par exemple ?

Damien: Pour moi, on va itérer sur le code en l'écrivant dans une première version. Si on repart de TDD, je vais écrire mon code pour qu'il fonctionne par rapport à mon test et ensuite je vais le refactorer pour l'améliorer. Donc c'est là que je vais commencer à sortir des petits morceaux de mon code pour qu'ils soient réutilisables, en l’occurrence des fonctions, et c'est donc en itérant sur mon code, en ajoutant des concepts comme les Option, les Either, des fonctions que l'on peut utiliser avec différents frameworks qui sont déjà disponibles en Java que l'on va ajouter du fonctionnel et que l'on va tailler dans nos lignes de codes. Donc c'est toujours en procédant par étapes et en itérant, en utilisant TDD, etc.

   

5. InfoQ: De manière générale, cette mouvance existe depuis quelques années mais on avait l’impression que ce paradigme n’était pas implémentable avec les stacks classiques. Comment puis-je commencer la programmation fonctionnelle dans mon projet Java 1.6 ?

Donc toujours en ayant une base de tests unitaires écrit sur un projet existant. On peut donc modifier le code en ajoutant des librairies comme Guava qui fournit un certain nombre de concepts comme le type Option. On a également la bibliothèque Functional Java qui fournit la notion de Map, le type Either également ainsi que la bibliothèque LambdaJ. Il existe donc un certain nombre de library qui, même si on ne va pas manipuler de Lambda ou de chose comme ça, nous prépare à l'arrivée de Java 8 ou à plus facilement basculer vers d'autres langages fonctionnels comme Scala ou Haskell. Donc j'encouragerais à incorporer du Guava dans les projets si ce n'est pas déjà fait et du Functionnal Java si il y a besoin.

   

6. InfoQ: Finalement, quelles sont les limites de ne pas utiliser un langage dédié à cela ? Y a-t-il des choses qui seront très complexes à faire en Java pur et qui me manquerait pour faire correctement de la programmation fonctionnelle ?

Damien: Je dirais que c'est justement ce qui va être apporté par Java 8 avec le concept de Lambda en opposition avec les inner classes. Donc ce qui pourrait manquer devrait être prochainement comblé. Pour moi, je ne vois rien qui manque, mais encore une fois je ne suis pas un expert fonctionnel, je suis un développeur Java qui apprend de nouvelles notions fonctionnelles au fur et à mesures.

   

7. InfoQ: Que penses-tu de Scala, qui est un vrai langage fonctionnel, et qui a la particularité de tourner sur la JVM ? Si je devais démarrer un nouveau projet sur la JVM en voulant adopter une approche fonctionnelle, plutôt Scala ou Java ?

Damien: Pour l'instant je suis plus à l'aise avec Java même si j'ai suivi le cours Scala sur Coursera. J'en fait régulièrement sur mon temps personnel, mais je n'en ai pas encore fait sur mon temps professionnel mais j'aimerais bien pouvoir le pousser sur certains projets pour pouvoir le confronter à de vraies problématiques professionnelles et voir si cela peut correspondre. Mais pour l'instant j'en suis encore à une phase de prototypage sur mon temps personnel. Donc pour le moment je partirais sur un projet Java 7.

09 août 2013

BT