Bonjour à tous,
Je réagis à cette discussion pour donner mon avis sur la question, et je vais vous expliquer pourquoi, selon moi, la question posée n'a pas de sens.
Tout d'abord un fait :
Java (peu importe la version) ne supporte pas la programmation fonctionnelle... le fait de pouvoir faire des lambdas n'est pas tout, (le fonctionnel est un paradigme à part entière! )
Je n'ai aucunement la prétention de donner un cours mais même si je n'ai pas une expérience très significative en programmation fonctionnelle,
je sais que les
3 principes fondamentaux sont:
-L'
immutabilité: on ne réaffecte pas de valeur à une 'variable' qui est ducoup une constante

Les langages fonctionnels encouragent la déclaration d'objets et collections immuables pour un code plus safe.
-Le
pattern matching : à ne surtout pas confondre avec les switch cases, le pattern matching permet de conditionner sur la structure des objets, collections, leurs types etc...
-La
récursivité : ça existe en Java mais c'est pas très conseillé a cause de StackOverFlow (tout le monde la connais celle là)

,
En Scala (entre autre) on a la notion de tail-récursivité c'est une optimisation qui va permettre de pouvoir TOUT coder de maniérè récursive sans dépasser les limites du Stack.
Surtout corrigez moi si je me trompe mais je pense que JAVA (8) n'en implémente aucun...
-L'immutabilité n'est absolument pas au cœur des préoccupations des développeurs Java, certains mécanisme du langage encouragent même l'utilisation des effets de bords.
-Le pattern matching : nop
-Et pas de tail récursivité en Java
Mis à part ces principes généraux, d'autres bien plus subtils font toute la richesse du paradigme fonctionnel, je pense en premiers aux types implicites, au monades, aux fonctions d'ordre supérieur... et bien d'autre.
Sans même parler des collections en Scala qui proposent énormément de fonctionnalités.
Il n'y a cependant qu'un seul moyen de vraiment comprendre l'interêt de faire du Scala :
faire du Scala, vous comprendrez par la même occasion l’intérêt de ne plus faire de Java.
Bref Java n'est absolument pas un langage fonctionnel, et il ne le sera probablement jamais ; Scala , en revanche est un langage multi-paradigme super sympa qui souffre malheureusement des défauts de la JVM.
4 |
2 |