Ist die Klassische OOP gescheitert?

Für Dinge zum Forum, Kritik, Verbesserungsvorschläge, Umfragen und ähnliches.
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Ist die Klassische OOP gescheitert?

Beitrag von pluto »

Hallo

Wie ich bereits im anderen Thread behauptet habe, gilt das Klassische Konzept der OOP als gescheitert... Hier geht es vorallem um das Konzept der Vererbung.
Auf der anderen Seite, kann man die OOP auch nicht für alles Verwenden und man muss immer wieder abwiegen, was man wie nutzt.

Weil, durch die Verwendung der Klassischen OOP, werden einfach schnell zu viele Klassen erzeugt, was die Übersicht einfach erschwert.
Bestes Beispiel ist hier die LCL/VCL...

Wie sieht ihr das?

Edit: Ich habe mal den Titel geändert, weil in den Thread inzwischen klar geworden ist, dass nicht die OOP im allgemeinen gescheitert ist, sondern "nur" die Klassische. D.H. die Vererbung...
Außerdem gibt es hier einige Links.
Nun gibt es ein paar Links:
https://www.yegor256.com/2016/08/15/wha ... mming.html
https://www.leaseweb.com/labs/2015/08/o ... nally-bad/
https://content.pivotal.io/blog/all-evi ... g-bullshit
https://de.wikipedia.org/wiki/Kreis-Ellipse-Problem

Alternativen zu OOP und Konzepte, die in OOP fehlen:
https://de.wikipedia.org/wiki/Funktiona ... rammierung
https://en.wikipedia.org/wiki/Algebraic_data_type

Und über richtige Konzepte:
https://unglueit-files.s3.amazonaws.com ... 3a851d.pdf

Edit2: Beitrag angepasst um einen Persönlichen Grund hinzuzufügen... Wenn man schon etwas "behauptet" sollte man auch ein "Grund" hinzufügen...
Das hatte ich versäumt...

Edit3: Theos Vorschlag übernommen und angepasst und den Titel erneut angepasst...
Zuletzt geändert von pluto am Di 15. Jan 2019, 16:58, insgesamt 4-mal geändert.
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: OOP gilt als gescheitert

Beitrag von MacWomble »

Ich lese das andres, als hier dargestellt. Nicht OOP gilt als veraltet, sondern die Vererbung soll durch Interfaces ersetzt werden. Dies schließt jedoch OOP nicht aus.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OOP gilt als gescheitert

Beitrag von pluto »

Nicht OOP gilt als veraltet, sondern die Vererbung soll durch Interfaces ersetzt werden. Dies schließt jedoch OOP nicht aus.

ja, ich habe den Thread mir auch gerade angeschaut... Jedoch haben die Pascal Interfaces auch ihrer nachteile z.b. das man alle Methoden in einem Interface nutzen muss...

In neueren Programmiere Sprachen wie z.b. Rust soll es sogar so sein, dass die ganz auf Vererbung verzichten. Dort kann man Methoden hinzufügen...
Es geht darum, dass die OOP die Struktur erschwert zu verstehen.

Ein Beitrag vom "23. März 2017" von Finalspace beschreibt es ganz schön, ein paar Antworten weiter unten, Erklärt er das auch noch etwas genauer...

Weiter unten:

Und nein ich verteufele nicht OOP, aber hasse es wenn es unnötig zu excessive eingesetzt wird - vor allem um Code so zu verschleiern das man wirklich nichts mehr versteht:

- Klassen die eigentlich nur eine Methode haben
- Konstrukturen die nichts anderes machen als Felder initialisieren (C++)
- Exceptions everywhere -> Error codes ist doch nicht mehr State of the Art (Ein 100 er Exception Stack macht doch viel mehr Spaß zu debuggen, wenn der Datenbankpool vollgelaufen ist)
- Statische Klassen die Handler, Manager oder sonst wie heißen die mehr tun als sie zu angeben zu tun
- Getter und Setter obwohl eigentlich keine notwendig besteht für irgendwelche Sichtbarkeitsbeschränkungen
- C++ Bibliotheken die wild Speicher erzeugen und ich keinerlei Zugriff darauf habe
- Nutzlose Kommentare bei selbsterklärenden Funktionsnamen
- Code der in 100 Methoden ausgelagert wurde, obwohl kein Code mehrfach verwendet wird (Eine Methode soll ja nicht mehr wie 30 Zeilen haben -.-)
- Es ist kaum bis gar nicht möglich Schritt für Schritt das Programm von Oben nach Unten zu debuggen
- Exrem aufgeblähte C++ OOP API´s mit hunderten von Templates (Boost z.b.)
- Exceptions vor Asserts bevorzugen
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: OOP gilt als gescheitert

Beitrag von MacWomble »

Ich würde mir da keine Gedanken machen, in der Softwarewelt wird - Gott sei Dank - selten etwas abgeschafft.
Wäre auch ja auch absolut unsinnig, wenn man an älteren Programmen noch Änderungen machen müsste, und das geht dann nicht mehr.

Dass die Vererberei etc. nicht leicht zu verstehen ist, bestätige ich hiermit. Es ist im Prinzip nicht wirklich kompliziert, aber halt auch nicht immer gleich erkennbar.
Es ist bisweilen notwendig de Vererbungspfad zurück zu gehen, um die genaue Funktion zu erkennen. Interfaces können dies eventuell vereinfachen, andere Sachen aber auch erschweren.

Dennoch macht es um so mehr Spaß, je mehr man mit OOP macht. :P
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OOP gilt als gescheitert

Beitrag von pluto »

Ich würde mir da keine Gedanken machen, in der Softwarewelt wird - Gott sei Dank - selten etwas abgeschafft.
Wäre auch ja auch absolut unsinnig, wenn man an älteren Programmen noch Änderungen machen müsste, und das geht dann nicht mehr.

Alles entwickelt sich weiter... Klar, ist Pascal wie C eine Alte Programmier Sprache...
Es geht vor allem darum, dass man mit OOP halt nicht so gut Strukturieren kann, gerade bei sehr großen Projekten, soll es angeblich schnell unübersichtlich werden, dass habe ich auch bei meinen Projekten schon bemerkt... und es geht auch um das Vererben... Methoden soll man einfach hinzufügen.
Z.B. du hast eine Eigenschaft, die einen bestimmten Datentyp hat, nun möchtest du den Datentyp ändern, dass geht nicht so einfach und ist auch nicht unbedingt vorgesehen.

Schaut euch mal Moderne Sprachen an... Bei Rust habe ich das Problem mit dem Einstieg, es gibt A kaum brauchbares Material in Deutsch, dass Aktuellste was ich gefunden habe, war 3 Jahre alt... in der gab es sehr viele Veränderungen. B gibt es noch keine IDE... die einen das Programmieren vereinfacht.... C man muss in Rust sehr genau schreiben, was man möchte und was man erwartet.
Dadurch hat der Complier die Möglichkeit sehr viele Fehler schon bei einer Syntax Prüfung zu finden, wo andere erst bei der Ausführung drauf stoßen, wenn überhaupt.
Rust schreibt sogar vor, wie die Variablen(Gibt es in dieser Form auch nicht mehr) benannt werden sollen. z.b. alles klein geschrieben, weil Datentypen groß geschrieben werden.

Wenn ich mehr Infos habe dazu, werde ich sie im ersten Thread aufschreiben....
MFG
Michael Springwald

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: OOP gilt als gescheitert

Beitrag von m.fuchs »

Naja, wie ich erwartet habe: keine Belege dafür, dass OOP gescheitert ist.
Zum Teil berechtigte Kritiken an Vererbung sind ja das eine, aber auch Alternativen zu Vererbung nutzen wieder OOP. Sei es durch Interfaces oder bestimmte Patterns.

Und auch diese Kritiken sind ja nicht neu, genausowenig wie die Alternativen dazu. Von daher: nichts was überraschend wäre oder uns zur Abkehr von OOP zwingt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OOP gilt als gescheitert

Beitrag von pluto »

Naja, wie ich erwartet habe: keine Belege dafür, dass OOP gescheitert ist.

Die kommen noch, ich finde gerade keine.... ich habe es ja auch nur "gehört" von jemanden... Ich denke, aber das es auch belege gibt. In den Artikel wird es ja beschrieben:
Stellt euch ein Quadrat und Rechteck vor... nun stellt euch vor, wie die passenden Klassen dazu aussehen sollen...
und denkt daran, dass ihr weitere Formen vielleicht hinzufügen wollt.
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: OOP gilt als gescheitert

Beitrag von MacWomble »

@Pluto
1. Niemand muss Rust verwenden
2. Schau dir Cobol an, was dort alles beachtet werden muss(te)

Letztendlich entscheiden die Entwickler, welches Werkzeug sie verwenden. Und wenn das Werkzeug nicht geeignet ist, wird es in die Tonne geklopft. :twisted:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OOP gilt als gescheitert

Beitrag von pluto »

1. Niemand muss Rust verwenden

Das Stimmt natürlich... Es basiert jedoch auf "neuster" Erkenntnisse der Vergangen Jahre Zehnte... Was Programmier Konzepte angeht....
Ich werde Rust, vermutlich aus einem anderen Grund nicht verwenden, weil es eben bisher kaum Brauchbare Tutorials in Deutsch gibt.

2. Schau dir Cobol an, was dort alles beachtet werden muss(te)

Das ist jetzt aber nicht wirklich eine neue Programmiersprache oder?

Letztendlich entscheiden die Entwickler, welches Werkzeug sie verwenden. Und wenn das Werkzeug nicht geeignet ist, wird es in die Tonne geklopft.

Stimmt. Aber Wegen Rust, weiß ich halt das jedenfalls teile von OOP gescheitert sind... Vielleicht sollte ich den Thread umbenennen.

Auf der anderen Seite, kann ich es mir nicht vorstellen das, die OOP sinn macht ohne Vererbung... Das Konzept von Rust, Methoden einfach hinzufügen und dadurch dir Struktur zu vereinfachen gefällt mir jedoch von der reinen Idee her, sowas wünsche ich mir in Pascal.... Da in Pascal ja sowieso so gut wie jedes Konzept von anderen Programmier Sprachen aufgenommen werden, warum nicht auch dieses?

Als Alternative zum Vererben...
MFG
Michael Springwald

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: OOP gilt als gescheitert

Beitrag von MacWomble »

pluto hat geschrieben:[
2. Schau dir Cobol an, was dort alles beachtet werden muss(te)

Das ist jetzt aber nicht wirklich eine neue Programmiersprache oder?

Nein, was ich auch durch die Klammer bei 'muss(te)' zum Audruck bringen wollte.

Rust:

'Bei Rust ist OOP teilweise gescheitert' wäre wohl die bessere Aussage.- Na und? Shit Happens: Wer Rustet der Rostet :P
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OOP gilt als gescheitert

Beitrag von pluto »

'Bei Rust ist OOP teilweise gescheitert' wäre wohl die bessere Aussage.- Na und? Shit Happens: Wer Rustet der Rostet

Auf der anderen Seite könnte man auch sagen:
Da die Vererbung ein Wichtiger teil der OOP war/ist, und genau die Vererbung als "gescheitert" angesehen wird, ist die OOP ebenfalls gescheitert...
Eine OOP ohne Vererbung, ist aber keine Klassische OOP mehr...

Wie sieht die OOP ohne Vererbung aus? Die Strukturen sollen ja nach Moderner Ansichten so einfach wie möglich sein. Da helfen auch keine Interfaces.
MFG
Michael Springwald

shadow
Beiträge: 2
Registriert: Fr 9. Mai 2014, 13:20

Re: OOP gilt als gescheitert

Beitrag von shadow »

pluto hat geschrieben:
'Bei Rust ist OOP teilweise gescheitert' wäre wohl die bessere Aussage.- Na und? Shit Happens: Wer Rustet der Rostet

Auf der anderen Seite könnte man auch sagen:
Da die Vererbung ein Wichtiger teil der OOP war/ist, und genau die Vererbung als "gescheitert" angesehen wird, ist die OOP ebenfalls gescheitert...
Eine OOP ohne Vererbung, ist aber keine Klassische OOP mehr...

Wie sieht die OOP ohne Vererbung aus? Die Strukturen sollen ja nach Moderner Ansichten so einfach wie möglich sein. Da helfen auch keine Interfaces.


Mach dir keinen Kopf drum. Das ist nur die nächste Sau, die durch's Dorf getrieben wird.
So pi * Daumen jedes Jahrzehnt kommen "Intelligenzbestien" und verdammen alles Alte Bewährte und wollen etwas "komplett neues und innovatives" konzipiert haben. Das war bei der Einführung von Java so, von .NET, von JavaScript, UML (kennt das jemand noch?), XML, ...
OOP ist nicht "gescheitert", die Leutchen zählen nur mögliche Schwachpunkte auf, welche bei jedem Programmierkonzept/-sprache genannt werden können, und hoffen so "handfeste Argumente" zu erzeugen, um ihr "Liebstes" an den Mann/die Frau zu bringen.
Nennt man virtuellen Mangel erzeugen, wie damals bei der Einführung von GMail. GMail wurde damals als schwer zu bekommen verkauft, damit die Leute sich darum reissen. Hat auch wunderbar geklappt ... und dann entpuppte sich GMail auch nur als weiterer stupider E-Mail-Provider.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: OOP gilt als gescheitert

Beitrag von MacWomble »

Ich denke - habe mich nicht damit befasst - dass die Interfaces ähnliche Funktionalität bieten, wie die Vererbung. Die Programmierung könnte (muss aber nicht) hierdurch einfacher und transparenter werden.
In vielen Firmen ist OOP ohnehin verpönt, weil die Wartung angeblich aufwändiger ist als bei funktionaler Programmierung. Aber Klassen sind m.E eleganter als Funktionen mit definierten Ein- und Ausgabeschnittstellen. Letzteres haben wir schon 1987 auf HP-Großrechnern angewandt und das war auch kein Zuckerschlecken.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: OOP gilt als gescheitert

Beitrag von pluto »

Mach dir keinen Kopf drum. Das ist nur die nächste Sau, die durch's Dorf getrieben wird.

Ich bleibe bei dem gewohnten... Auch wenn sich mit der OOP in der jetzigen Form GUI Konzepte nur schwer und unübersichtlich entwickeln lassen.

So pi * Daumen jedes Jahrzehnt kommen "Intelligenzbestien" und verdammen alles Alte Bewährte und wollen etwas "komplett neues und innovatives" konzipiert haben. Das war bei der Einführung von Java so, von .NET, von JavaScript, UML (kennt das jemand noch?), XML, ...

UML habe ich mal gehört.... ist doch so eine Art Klassen vor beschreibungs sprache? oder eher Konzept?

In vielen Firmen ist OOP ohnehin verpönt, weil die Wartung angeblich aufwändiger ist als bei funktionaler Programmierung. Aber Klassen sind m.E eleganter als Funktionen mit definierten Ein- und Ausgabeschnittstellen. Letzteres haben wir schon 1987 auf HP-Großrechnern angewandt und das war auch kein Zuckerschlecken.

ja, es werden schnell unzählige Klassen Entworfen... Für ein GUI Konzept hatte ich ermittelt, dass schnell 5 Klassen Pro "Komponente" nötig währen... Dann habe ich davon Abstand genommen...

Aber wie sieht in Firmen die Programmierung aus? Nutzen die nur Funktionen und records? Das ist aber auch auf dauer sehr unschön oder?
MFG
Michael Springwald

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: OOP gilt als gescheitert

Beitrag von m.fuchs »

pluto hat geschrieben:
Naja, wie ich erwartet habe: keine Belege dafür, dass OOP gescheitert ist.

Die kommen noch, ich finde gerade keine....

Hmmm.

pluto hat geschrieben:ich habe es ja auch nur "gehört" von jemanden...

So etwas nennt man beim Militär "Latrinenparolen". :wink:

pluto hat geschrieben:Stellt euch ein Quadrat und Rechteck vor... nun stellt euch vor, wie die passenden Klassen dazu aussehen sollen...
und denkt daran, dass ihr weitere Formen vielleicht hinzufügen wollt.

Das ist doch ein uralter Hut. Leite ich von Rechteck oder von Quadrat ab? Oder von was ganz anderem?
Die Antwort darauf ist ganz einfach: es kommt darauf an. Rechteck und Quadrat sind selber etwas abstraktes und erst einmal muss geklärt werden, was mein Rechteck machen soll.
Das ist aber kein Problem der OOP, sondern einer Problem der Anforderungsanalyse.

pluto hat geschrieben:Auf der anderen Seite könnte man auch sagen:
Da die Vererbung ein Wichtiger teil der OOP war/ist, und genau die Vererbung als "gescheitert" angesehen wird, ist die OOP ebenfalls gescheitert...

Erstens ist auch die Vererbung nicht gescheitert. Zweitens ist OOP nicht nur Vererbung.

Ich finde es nicht gut, dass du hier so kategorisch das Scheitern von OOP propagierst. Das ist einfach weit entfernt von der Realität.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten