Pour ceux qui souhaitent découvrir la programmation fonctionnelle, je recommande scala. Un cours gratuit de 7 semaines vient de se terminer sur Coursera, mais peut-être que les lectures sont encore en ligne. Les exercices étaient tous excellents, et tirés du livre de référence: Structure and Interpretation of Computer Programs.
Ce style de programmation vit un net regain d'intérêt depuis quelques années, notamment depuis l'arrivée des processeurs multi-cores et du fameux "Claude" (vous savez, le nuage toussa). Un grand avantage dans ces deux cas et que la programmation fonctionnelle favorise les données dites "immutable", qu'on ne peut plus modifier une fois initialisées (comme une String en Java). Le traitement parallèle des données devient donc trivial, puisqu'il n'y a plus de données partagées et donc de concurrence d'accès (i.e synchronisation). Une fonction ne modifie pas ses paramètres d'entrée, n'a pas d'effets de bord, et est donc parfaitement reproductible quel que soit le contexte d'exécution (ce qui fait que les programmes fonctionnels sont plus facilement testables).
Il y bien d'autres arguments, et on ne (re)fera pas le débat ici. Un point important apporté par l'article et qu'il est possible d'adopter des principes fonctionnels avec presque tous les langages, par exemple en ne modifiant pas ses variables, en utilisant des algorithmes récursifs, ou en passant des fonctions en paramètre d'autres fonctions (si le langage le permet, comme avec des pointeurs en C ou des "function object" en C++). Bien sûr, un vrai langage fonctionnel sera toujours plus adapté au style.
Pour ceux qui aiment des arguments plus terre à terre, mon expérience montre qu'un programme en scala est nettement plus concis (2 à 3 fois) que son équivalent Java, et nettement plus maintenable (moins de bugs subtils de synchronisation qui au final sont souvent très longs et difficiles à corriger).
# Scala
Posté par Imagine2 . En réponse au journal Adopter un style de programmation fonctionnel. Évalué à 4.
Pour ceux qui souhaitent découvrir la programmation fonctionnelle, je recommande scala. Un cours gratuit de 7 semaines vient de se terminer sur Coursera, mais peut-être que les lectures sont encore en ligne. Les exercices étaient tous excellents, et tirés du livre de référence: Structure and Interpretation of Computer Programs.
Ce style de programmation vit un net regain d'intérêt depuis quelques années, notamment depuis l'arrivée des processeurs multi-cores et du fameux "Claude" (vous savez, le nuage toussa). Un grand avantage dans ces deux cas et que la programmation fonctionnelle favorise les données dites "immutable", qu'on ne peut plus modifier une fois initialisées (comme une String en Java). Le traitement parallèle des données devient donc trivial, puisqu'il n'y a plus de données partagées et donc de concurrence d'accès (i.e synchronisation). Une fonction ne modifie pas ses paramètres d'entrée, n'a pas d'effets de bord, et est donc parfaitement reproductible quel que soit le contexte d'exécution (ce qui fait que les programmes fonctionnels sont plus facilement testables).
Il y bien d'autres arguments, et on ne (re)fera pas le débat ici. Un point important apporté par l'article et qu'il est possible d'adopter des principes fonctionnels avec presque tous les langages, par exemple en ne modifiant pas ses variables, en utilisant des algorithmes récursifs, ou en passant des fonctions en paramètre d'autres fonctions (si le langage le permet, comme avec des pointeurs en C ou des "function object" en C++). Bien sûr, un vrai langage fonctionnel sera toujours plus adapté au style.
Pour ceux qui aiment des arguments plus terre à terre, mon expérience montre qu'un programme en scala est nettement plus concis (2 à 3 fois) que son équivalent Java, et nettement plus maintenable (moins de bugs subtils de synchronisation qui au final sont souvent très longs et difficiles à corriger).