Je peux voir que les avantages des objets mutables par rapport aux objets immuables, comme les objets immuables, enlèvent beaucoup de problèmes difficiles à résoudre dans la programmation multithread en raison de l'état partagé et accessible en écriture. Au contraire, les objets mutables aident à gérer l'identité de l'objet plutôt que de créer une nouvelle copie à chaque fois et améliorent ainsi les performances et l'utilisation de la mémoire, en particulier pour les objets plus gros.
Une chose que j'essaie de comprendre, c'est ce qui peut mal tourner en ayant des objets mutables dans le contexte de la programmation fonctionnelle. Comme l'un des points qui m'a été dit, le résultat de l'appel de fonctions dans un ordre différent n'est pas déterministe.
Je cherche un exemple concret réel où il est très évident ce qui peut mal tourner en utilisant un objet mutable dans la programmation de fonctions. Fondamentalement, si elle est mauvaise, elle est mauvaise quel que soit l'OO ou le paradigme de programmation fonctionnelle, non?
Je crois que ma propre déclaration répond elle-même à cette question. Mais j'ai encore besoin d'un exemple pour pouvoir le ressentir plus naturellement.
OO aide à gérer la dépendance et à écrire des programmes plus faciles et maintenables à l'aide d'outils tels que l'encapsulation, le polymorphisme, etc.
La programmation fonctionnelle a également le même motif de promouvoir le code maintenable, mais en utilisant un style qui élimine le besoin d'utiliser des outils et des techniques OO - dont je crois que c'est en minimisant les effets secondaires, la fonction pure, etc.