Hi!

Eine kleine Geschichte der Programmierparadigmen:

Zuerst gab es ausschließlich die imperative Programmierung. Also die Programmierung mit nacheinander ausgeführten Befehlen und einfachen, bedingten Sprunganweisungen. (Beispiel: Maschinensprache)

Einige Zeit später kamen andere schlaue Köpfe auf die Idee, dass es doch besser wäre, wenn man die Programme in Form von Unterprogrammen strukturieren könnte.
Dies wurde dann prozedurale Programmierung genannt.
Für ihre ketzerische Einstellung gegenüber imperativer Programmierung wurden die Anhänger dieses neuen Paradigmas dann von den "wahren (imperativen) Programmierern" verteufelt.

Kurz darauf (bzw. parallel dazu) haben sich wiederum einige schlaue Köpfe überlegt, dass es doch noch schöner wäre, wenn man zusätzliche Kontroll- und komplexe Datenstrukturen verwenden könnte.
Dies wurde dann strukturierte Programmierung genannt.
Für ihre ketzerische Einstellung gegenüber prozeduraler Programmierung wurden die Anhänger dieses neuen Paradigmas dann von den "wahren (prozeduralen) Programmierern" verteufelt.

Noch später kamen dann nochmals andere schlaue Köpfe auf den Trichter, dass man noch strukturierter Arbeiten könnte, wenn man Datenstrukturen und deren Operationen zusammenfassen würde.
Dies wurde dann objektorientierte Programmierung genannt.
Für ihre ketzerische Einstellung gegenüber strukturierter Programmierung wurden die Anhänger dieses neuen Paradigmas dann von den "wahren (strukturierten) Programmierern" verteufelt.

Oder anders:

Es sind alles nur Erweiterungen des imperativen Konzepts. Du kannst in fast jeder OOP fähigen Sprache auch strukturiert programmieren. (rein imperativ geht nicht immer, da z.B. in Java gar keine Sprungbefehle mehr vorhanden sind)
Strukturierte oder objektorientierte Programmierung ist dabei eben optional möglich.
Die Gründe für diese stetige Weiterentwicklung der Programmierparadigmen liegen in der immer weiter steigenden Komplexität von Computerprogrammen und dem Bedarf diese Komplexität beherrschbar zu machen.


Heutzutage wird für alle nicht objektorientiert aufgebauten Programme - also für Programme bei denen Datenstrukturen und Programmlogik voneinander getrennt sind - der Begriff "prozedurale Programmierung" gebraucht, obwohl damit eigentlich "strukturierte Programmierung" gemeint ist.

OOP hat gegenüber der prozeduralen Programmierung den Vorteil, dass man Softwarearchitekturen auf einem hohen Abstraktionsniveau beschreiben und auch vermitteln kann.
Das ist besonders für die Kommunikation in Programmier-Teams wichtig.
Auch wird mittels OOP eine lose Kopplung verschiedener Programmteile ermöglicht und somit kann die Wartbarkeit/Änderbarkeit von Software erhöht werden.
Das ist aber eben nicht immer automatisch der Fall wenn man objektorientiert programmiert, sondern meist nur dann, wenn man auch entsprechenden Aufwand in eine vernünftige Softwarearchitektur steckt.
Der Nachteil ist eben der erhöhte Anfangsaufwand und das vergleichsweise hohe Ausbildungsniveau, dass benötigt wird.
Beides treibt aber auch wieder die Kosten der Programmierung in die Höhe- einen wirklichen Vorteil hat OOP hier also bestenfalls bei sehr sehr großen Projekten.
Diese sind aber nur sehr rar gesäht.
Aus diesem Grund spielt die objektorientierte Programmierung (anders als z.B. die objektorientierten Programmiersprachen) in Deutschland auch nur eine untergeordnete Rolle.
Wir haben in Deutschland schlichtweg zu wenig Programmierer, die überhaupt in der Lage wären objektorientiert zu programmieren.
Außerdem fehlt häufig schlichtweg der Bedarf nach dauerhaft wartbarer Software.
Von daher schätze ich, dass nach wie vor weit mehr als 95% der neu entwickelten Software primär prozedural bzw. strukturiert entwickelt wird.
Trotzdem ist die Welt in Deutschland noch nicht untergegangen.

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.