Loading...

Why Is OOP So Popular?

21. November 2023
3 Minuten Lesezeit
Beitrag teilen:

Hi,

Warum entwickeln wir heute objektorientiert und nicht funktional? Wieso sind 7 von 10 der populärsten Programmiersprachen objektorientiert? Und warum ist keine (rein) funktionale Sprache darunter?

image.png
Quelle: Stackoverflow Developer Survey 2023

Die Frage hat sich auch Richard Feldman 2019 gestellt. Und die Hintergründe sind interessant.

Natürlich - wie immer - es ist kompliziert.

Aber einen Aspekt finde ich besonders interessant.

Richard fragt sich, ob es an einzigartigen Features in OOP liegt, die in anderen Paradigmen nicht vorhanden sind.

Das einzige wirklich einzigartige Feature von OOP ist Vererbung. Alles Andere finden wir auch in anderen Paradigmen.

Es stellt sich also die Frage: ist Vererbung das Killer-Feature? Entwickeln wir deswegen objektorientiert?

Spannend dabei: Jeder erfahrene Entwickler rät von Vererbung ab . Das populärste Beispiel ist von der Gang of Four in Design Patterns von 1994. Oder in Effective Java von Jochua Bloch.

Prefer Composition over Inheritance

Das ist das Kredo in der objektorientierten Entwicklung.

Vererbung kann also nicht das Killer-Feature sein, dass OOP zum defacto Standard gemacht hat.

Die popularität von OOP war, mehr oder weniger, Zufall.

Alle Sprachen, die wir heute haben sind in einem zeitlichen Kontext entstanden.

Seit Anbeginn der Zeit hat jeder Entwickler nach wegen gesucht seinen Code zu strukturieren. Es wurde schon immer nach wegen gesucht zu modularisieren und zu entkoppeln. Der OOP Ansatz ist einer davon.

Und mit der Zeit spielten viele Faktoren, wie Marketingbudget, populäre Plattformen und Tools, geistige Vorbilder oder einfache Zufälle, wie der Zeitdruck beim Design von JavaScript, dazu bei, dass wir heute OOP als dominierendes Paradigma vorfinden.

Und dabei wissen wir auch, dass OOP viele Schwächen hat. Es verführt zu viel State. Moderne Sprachen verringern das immer weiter. Wir haben fluent-apis, streams und records. Vor vielen Jahren wurden for-each Schleifen eingeführt. Und Features wie Auto-Unboxing, Pattern-Matching helfen uns weiteren State zu vermeiden.

Wenn wir in die FAQ von Kotlin schauen, dann lesen wir:

image.png

Moderne Sprachen ermöglichen funktionale Programmierung

Zurück zur Anfangsfrage: Warum entwickeln wir heute objekt-orientiert und nicht funktional?

Zufall. Wir Entwickler streben entkoppelten Code an. Und OOP war zur richtigen Zeit am richtigen Ort. Es half den Code besser zu strukturieren.

OOP ist aber nicht populär weil es das Beste Paradigma ist. Deshalb lohnt es sich über den Tellerrand zu schauen.

Wenn du es noch nicht getan hast, dann setze dich mit der funktionalen Programmierung auseinander. Du profitierst davon. Auch in den populären Sprachen. Du wirst vielleicht nicht alle Vorteile von FP vollends nutzen können (z.B. automatisches memoize). Aber du wirst Code mit weniger Seiteneffekten produzieren - und das ist in jeder Sprache gut.

ps. Mein KKON Talk “Pragmatic Programming mit Kotlin” ist seit letzter Woche auf YouTube 🎉. Darin siehst du ein paar einfache Beispiele, wie ich unnötigen State vermeide. Und das im Live-Coding. Viel Spaß damit!

Rule the Backend,

~ Marcus

Top