* Ich habe dies immer wieder gehört und versuche zu verstehen und zu bestätigen, dass FP und OO orthogonal sind. *
Was bedeutet es zunächst, wenn zwei Konzepte orthogonal sind?
Wikipedia-Zitat: "Orthogonalität garantiert, dass das Ändern des technischen Effekts, der durch eine Komponente eines Systems erzeugt wird, keine Nebenwirkungen erzeugt oder auf andere Komponenten des Systems überträgt."
Dies bedeutet lediglich, dass die Änderung an einem System keine Auswirkungen auf eine Änderung im anderen System hat und haben kann.
Zum Beispiel hat ein Auto orthogonale Komponenten und Bedienelemente (z. B. das Beschleunigen des Fahrzeugs beeinflusst nichts anderes als die Komponenten, die ausschließlich mit der Beschleunigungsfunktion zu tun haben. Es wirkt sich beispielsweise nicht auf das Radio aus (obwohl ich nicht sicher bin, ob es das Abspielen von CDs beeinflusst, da meins manchmal überspringt)).
FP fördert die Unveränderlichkeit und Reinheit so weit wie möglich. und OO scheint etwas zu sein, das auf Staat und Mutation ausgelegt ist (eine leicht organisierte Version der imperativen Programmierung?). Und mir ist klar, dass Objekte unveränderlich sein können. Aber OO scheint für mich Zustand / Veränderung zu implizieren.
Sie scheinen Gegensätze zu sein. Bedeutet das, dass sie orthogonal sind?
Irgendwie. Das Problem ist, dass keines dieser Konzepte wirklich steinhart definiert ist. Aber ja, Sie haben es verstanden.