Le vrai problème est l'état.
Les langages fonctionnels n'ont pas d'état global. La plupart des problèmes industriels nécessitent un état à grande échelle (comment représenter un grand livre ou un ensemble de transactions) même si certaines fonctions à petite échelle ne l'exigent pas réellement (traitement d'un grand livre).
Mais nous utilisons du code sur des machines à architecture Von-Neuman qui sont par nature saturées. Nous ne nous sommes donc pas débarrassés de l'état, les langages fonctionnels cachent simplement la complexité de l'état au développeur. Cela signifie que le langage / le compilateur doit gérer et gérer l'état dans les coulisses.
Ainsi, bien que les langages fonctionnels n'aient pas d'état global, leurs informations d'état sont transmises en tant que paramètres et résultat.
La question est donc de savoir si le langage peut gérer efficacement l’État derrière le sens. Surtout quand la taille des données dépasse de loin la taille de l'architecture.
En regardant de côté du matériel
Le système d'exploitation a beaucoup aidé ces dernières années à visualiser l'espace d'adressage, de sorte que les applications n'ont pas à s'en préoccuper officiellement. Mais les applications qui ne craignent rien tombent dans le piège de la destruction du matériel lorsque la pression de la mémoire devient intense (la suppression du matériel ralentira considérablement vos processus).
Comme le programmeur n'a pas de contrôle direct sur l'état dans le langage fonctionnel, il doit s'appuyer sur le compilateur pour gérer cela et je n'ai pas vu de langages fonctionnels qui le traitent bien.
Sur le revers de la médaille, le programmeur à état plein a un contrôle direct sur l'état et peut ainsi compenser les conditions de mémoire insuffisante. Bien que je n’aie pas vu beaucoup de programmeurs assez intelligents pour le faire.
En regardant du côté de l'industrie:
L’industrie a beaucoup de programmeurs inefficaces, pleins d’états.
Mais il est facile de mesurer les améliorations apportées à ces programmes au fil du temps. Vous posez une équipe de développeurs sur le problème, ils peuvent améliorer le code en améliorant la façon dont le programme gère l’état.
Pour les programmes fonctionnels, les améliorations sont plus difficiles à mesurer, car vous devez améliorer les outils qui les amélioreront (nous examinons simplement la manière dont les applications gèrent efficacement l'état sous-jacent, et non l'amélioration globale du programme).
Donc, pour l’industrie, je pense que cela dépend de la capacité de mesurer les améliorations apportées au code.
Du point de vue de l'embauche
Il y a beaucoup de programmeurs stat-full disponibles à la location. Les programmeurs fonctionnels sont difficiles à trouver. Ainsi, votre modèle de base d’offre et de demande entrerait en jeu si l’industrie basculait vers la programmation de style fonctionnel, ce qu’elle ne souhaitait pas (les programmeurs sont assez chers en l’état).