Warum ist die Objektorientierte Programmierung überbewertet?
Ob sie überbewertet ist? OOP ist ein Design Pattern der imperativen Programmierung. Es liefert eine Möglichkeit eine Funktion ohne großen Rechenaufwand auszuwählen in Abhängigkeit des Datentyps des betreffenden Objektes. Das war’s im Prinzip.
Allerdings ist dies ein sehr häufiges Problem, was auf unterschiedlichste Arten implementiert werden kann. OOP unterstützende Sprachen machen das häufig in der Form der Klassifizierung, da tatsächlich objektabhängige Programmierung eher selten benötigt wird.
In den 90ern hypte OOP und das durchaus zurecht, da der objektorientierte Ansatz Software-Projekte deutlich vereinfachte und vor allem wartbarer machte. Wohlgemerkt: OOP ist ein Design-Pattern - man kann damit nicht mehr machen als in der imperativen Programmierung auch, aber man organisiert sich anders. Wie man in der imperativen Programmierung auch OOP programmieren kann. Eine OOP-unterstützende Sprache unterstützt einen eben dabei.
OOP löst ein recht häufig auftretendes Problem und das auch noch relativ elegant und effizient.
Eine Überbewertung begann dann in den 90ern als man sich nicht mehr fragte, wo OOP eine sinnvolle Lösung sein könnte, sondern im Zuge des Java-Hypes einfach alles für schlecht definierte, was nicht mit OOP gelöst wurde.
Wohlgemerkt: OOP findet anhand des Datentyps effizient eine Funktion. Wenn man das Problem etwas zu Finden aber gar nicht hat, ergibt es aber keinen Sinn eine effiziente Suche zu nutzen.
Hierfür müssen Entwickler aber ausgebildet sein, den Nutzen von OOP zu verstehen und erkennen zu können, wann OOP überflüssig ist. Macht man alles zu einem OOP-Problem… wie soll der Jung-Entwickler unterscheiden lernen. Ich würde also nicht von einer Überbewertung sprechen, sondern von einem Mangel an Kenntnissen von Alternativen.
Wenn ein Entwickler sich Lösungen nur in OOP vorstellen kann, wie sollte er andere Lösungen finden?
Language shapes the way we think,
and determines what we can think about.
(Benjamin Lee Whorf)