La programmation fonctionnelle me parait intéressante dans le cadre de l’implémentation de micro services, pour traiter des événements asynchrones, ou bien faire des traitements de données.
Elle permet souvent de réduire la consommation en mémoire, de paralléliser facilement, et de simplifier les implémentations. Certains patterns de plus en plus utilisés sont issus de la programmation fonctionelle, comme MapReduce. Le code produit est facile à tester, car sans état.
Par contre, comme le dis @Masterdev, abuser de la programmation fonctionnelle peut rendre le code plus difficile à lire et à maintenir, et est clairement à éviter lorsqu’on a besoin de gérer des états. Dans ce cas, il vaut mieux utiliser la POO et créer des classes qui encapsulent les états (données) et les fonctions (méthodes).
Aujourd’hui, on assiste plutôt a une convergence des langages modernes, avec Java 8 qui supporte un peu plus la programmation fonctionnelle et JavaScript qui supporte (bientôt) la POO par classes (ES6)
Pour citer que quelques examples de frameworks :
NodeJS: On ne le présente plus.
Spark: Java 8 ouvre les possibilités de programmation fonctionnelle (Lamba, MapRedure, …), et Spark en est un bon exemple.
PlayFramework: Framework web écrit en scala, langage fonctionnel (ou pas, car très complet) sur la JVM.