D'ailleurs, si on évoque l'immuabilité, je présumes que le fonctionnel peut être très très coûteux lorsqu'on travaille sur des ensembles assez gros pour qui la muabilité permet d'éviter des recopies.
Dans la page Wikipédia, c'est :
https://fr.wikipedia.org/wiki/Progra...ef-monades_1-0En pratique, pour des raisons d'efficacité, et du fait que certains algorithmes s'expriment aisément avec une machine à états, certains langages fonctionnels autorisent la programmation impérative en permettant de spécifier que certaines variables sont assignables (ou mutables selon la dénomination habituelle), et donc la possibilité d'introduire localement des effets de bord[réf. nécessaire]. Ces langages sont regroupés sous le nom de langages fonctionnels impurs. Les langages dits purement fonctionnels n'autorisent pas la programmation impérative1. De fait, ils sont dénués d'effets de bord et protégés contre les problèmes que pose l'exécution concurrente. On peut voir par exemple ce qui a été fait dans le cadre du langage Erlang.
In functional code, the output value of a function depends only on its arguments, so calling a function with the same value for an argument always produces the same result. This is in contrast to imperative programming where, in addition to a function's arguments, global program state can affect a function's resulting value.i.e. on ne fait pas du fonctionnel, mais on fait "comme" du fonctionnel.Programming in a functional style can be accomplished in languages that are not specifically designed for functional programming
https://en.wikipedia.org/wiki/Functional_programming
Par exemple pour la mutabilité, si toutes tes variables ne sont pas "const" par défaut, ou si ton véficateur syntaxique ne t'insulte pas en cas de variables non-const non explicitées, alors de fait, tu programmeras potentiellement en impératif, mais pas en fonctionnel. Un exemple tout bête, si tu ne vérifies pas que tu as bien mis "constexpr" devant chaque fonction en C++, ton compilateur va pas pouvoir faire toutes les optis, tu ne sera pas en fonctionnel. Et sur des millions de lignes de codes, d'une 50ène de développeurs/stagiaire, t'en auras toujours un qui aura fait la bourde, si tu ne vérifie pas e.g. grâce au langage, ou via des hooks gits.
Partager