OOP selbst hat sich seit seiner Gründung nicht wesentlich verändert. Ein paar neue Blickwinkel wurden untersucht, aber die Kernprinzipien sind immer noch dieselben. Wenn überhaupt, macht das im Laufe der Jahre gesammelte kollektive Wissen das Leben des Programmierers eher einfacher als schwieriger. Designmuster sind kein Hindernis. Sie bieten eine Toolbox mit Lösungen für Standardprobleme, die auf jahrelanger Erfahrung basieren.
Warum empfinden Sie OOP heute als komplexer als zu dem Zeitpunkt, als Sie damit angefangen haben?
Ein Grund kann sein, dass der Code, dem Sie ausgesetzt sind, komplexer wird - nicht, weil OOP komplexer geworden ist, sondern weil Sie auf der Lernleiter Fortschritte gemacht haben und größere und komplexere Codebasen lesen können.
Ein weiterer Grund kann sein, dass sich das Komplexitätsparadigma zwar nicht geändert hat, die Größe und Komplexität eines durchschnittlichen Softwareprojekts jedoch sehr wohl. Mit der Rechenleistung, die auf Mobiltelefonen für Kunden verfügbar ist, die vor weniger als zwei Jahrzehnten ein feuchter Traum für Entwickler auf einem Server gewesen wären, rechnet die breite Öffentlichkeit im Grunde genommen mit raffinierten animierten Benutzeroberflächen für selbst die billigste Einweg-App und leistungsstärkeren Desktop-PCs der Einstiegsklasse Es ist nur natürlich, dass die Messlatte seit den Anfängen von Smalltalk und C ++ höher gelegt wurde als bei einem "Supercomputer" aus den 1980er Jahren.
Hinzu kommt, dass in modernen Anwendungen Parallelität und Parallelität eher die Norm als die Ausnahme sind und Anwendungen häufig zwischen verschiedenen Computern kommunizieren müssen, um eine ganze Reihe von Protokollen auszugeben und zu analysieren. Obwohl OOP als Organisationsparadigma großartig ist, hat es wie jedes andere Paradigma seine Grenzen: Zum Beispiel bietet es nicht viel Abstraktion für Parallelität (die meisten Implementierungen sind mehr oder weniger ein nachträglicher Gedanke oder wurden vollständig an Bibliotheken ausgelagert). und es ist nicht der bestmögliche Ansatz zum Erstellen von Parsern und zum Transformieren von Daten. Moderne Programmierung stößt häufig an die Grenzen des OOP-Paradigmas, und Entwurfsmuster können Sie nur so weit führen. (Persönlich, Ich betrachte die Tatsache, dass wir Entwurfsmuster benötigen, als ein Zeichen dafür - wenn das Paradigma diese Lösung sofort bereitstellen würde, wäre dies für diese Probleme aussagekräftiger, und die Standardlösungen wären offensichtlich. Es gibt kein Entwurfsmuster zur Beschreibung der Methodenvererbung, da dies ein Kernmerkmal von OOP ist. Es gibt jedoch ein Factory-Muster, da OOP keine offensichtliche natürliche Methode zum polymorphen und transparenten Konstruieren von Objekten bietet.)
Aus diesem Grund enthalten die meisten modernen OOP-Sprachen Merkmale aus anderen Paradigmen, wodurch sie ausdrucksvoller und leistungsfähiger, aber auch komplexer werden. C # ist das beste Beispiel dafür: Es hat offensichtliche OOP-Wurzeln, aber Features wie Delegaten, Ereignisse, Typinferenz, Variantendatentypen, Attribute, anonyme Funktionen, Lambda-Ausdrücke, Generika usw. stammen aus anderen Paradigmen, insbesondere der funktionalen Programmierung .