In einem von vielen Anti-OOP-Rants auf cat-v.org fand ich eine Passage von Joe Armstrong, die mehrere Einwände gegen das OOP-Modell erhob, von denen einer der folgenden war:
Einwand 4 - Objekte haben einen privaten Zustand
Staat ist die Wurzel allen Übels. Insbesondere Funktionen mit Nebenwirkungen sollten vermieden werden.
Während der Zustand in Programmiersprachen unerwünscht ist, gibt es in der realen Welt einen Überfluss. Ich interessiere mich sehr für den Status meines Bankkontos. Wenn ich Geld von meiner Bank einzahle oder abhebe, erwarte ich, dass der Status meines Bankkontos korrekt aktualisiert wird.
Welche Möglichkeiten sollte die Programmiersprache angesichts des Zustands in der realen Welt für den Umgang mit dem Staat bieten?
OOPLs sagen "verstecke den Status vor dem Programmierer". Die Zustände sind nur durch Zugriffsfunktionen verborgen und sichtbar. Herkömmliche Programmiersprachen (C, Pascal) besagen, dass die Sichtbarkeit von Zustandsvariablen durch die Bereichsregeln der Sprache gesteuert wird. Reine deklarative Sprachen sagen, dass es keinen Staat gibt. Der globale Zustand des Systems wird in alle Funktionen übertragen und geht aus allen Funktionen hervor. Mechanismen wie Monaden (für FPLs) und DCGs (Logiksprachen) werden verwendet, um den Status vor dem Programmierer zu verbergen, damit sie "so programmieren können, als ob der Status keine Rolle spielt", aber vollen Zugriff auf den Status des Systems haben, falls dies erforderlich sein sollte.
Die von OOPLs gewählte Option "Status vor dem Programmierer ausblenden" ist die schlechtere Option. Anstatt den Staat zu enthüllen und nach Wegen zu suchen, um die Belästigung des Staates zu minimieren, verstecken sie ihn.
Was genau ist damit gemeint? Ich habe sehr wenig Erfahrung auf niedrigem Niveau oder in Verfahren, meistens OOP, was wahrscheinlich erklärt, wie wenig ich damit vertraut bin. Und von einem moderneren Standpunkt aus, nachdem der größte Teil der objektorientierten Hysterie überwunden ist (zumindest soweit ich das beurteilen kann), wie genau / relevant halten Sie diese Passage?
Danke für Ihre Hilfe.