Ich kann sehen, dass die Vorteile von veränderlichen gegenüber unveränderlichen Objekten wie unveränderlichen Objekten aufgrund des gemeinsamen und beschreibbaren Status viele schwer zu behebende Probleme bei der Multithread-Programmierung beseitigen. Im Gegenteil, veränderbare Objekte helfen dabei, mit der Identität des Objekts umzugehen, anstatt jedes Mal eine neue Kopie zu erstellen, und verbessern somit auch die Leistung und die Speichernutzung, insbesondere für größere Objekte.
Eine Sache, die ich zu verstehen versuche, ist, was schief gehen kann, wenn veränderbare Objekte im Kontext der funktionalen Programmierung vorhanden sind. Wie einer der Punkte, die mir gesagt wurden, ist, dass das Ergebnis des Aufrufs von Funktionen in unterschiedlicher Reihenfolge nicht deterministisch ist.
Ich suche nach einem konkreten Beispiel, bei dem sehr offensichtlich ist, was mit veränderlichen Objekten in der Funktionsprogrammierung schief gehen kann. Grundsätzlich ist es schlecht, wenn es schlecht ist, unabhängig von OO oder funktionalem Programmierparadigma, oder?
Ich glaube unten meine eigene Aussage selbst beantwortet diese Frage. Trotzdem brauche ich ein Beispiel, damit ich es natürlicher fühlen kann.
OO hilft dabei, Abhängigkeiten zu verwalten und einfachere und wartbarere Programme mit Hilfe von Tools wie Kapselung, Polymorphismus usw. zu schreiben.
Funktionale Programmierung hat auch das gleiche Motiv, wartbaren Code zu fördern, aber durch die Verwendung eines Stils, der die Verwendung von OO-Tools und -Techniken überflüssig macht - eine davon ist meines Erachtens die Minimierung von Nebenwirkungen, reiner Funktion usw.