Ich hatte mir (vor nicht allzulanger Zeit) im englischen Forum mal die Mühe gemacht
und unsere Position zu diesem Thema ausführlich erklärt.
Leider ist der Thread später im Flame untergegangen und inzwischen gelöscht.
> Wäre es nicht viel sinnvoller wenn wir uns mal hier zusammenhocken und ein paar tolle Argumente pro OOP basteln um damit zu versuchen Fantaisie-Software zu überzeugen ?
Zuerst mal geht es hier (zumindest aus unserer Sicht) überhaupt nicht um die
Frage ob OOP als Prinzip gut oder schlecht ist.
Es geht hier um die Frage ob es einen Sinn macht aus PB (einer prozeduralen Sprache)
eine OO Sprache zu machen. (oder eben einen Hybrid aus beidem)
Des weiteren möchte ich anmerken das wir uns zu dem Thema nicht erst seit gestern gedanken
gemacht haben, sonder inzwischen schon seit Jahren.
Unsere Meinung dazu basiert also nicht auf nichtwissen (oder weil wir es nicht könnten, *lol*),
sondern ist das Ergebnis konkreter Überlegungen was eine Implementierung
von OO Features für Auswirkungen auf das Konzept der Sprache an sich hätte.
Ich wage also zu bezweifeln das "ein paar tolle Argumente pro OOP" reichen um unsere Meinung zu ändern.
(es seidenn es handelt sich um bahnbrechend neue Erkenntnisse zu dem Thema

)
Here we go...
Zum einen ist es eine Frage des Language-Designs. PB ist nunmal von Grund auf
eine Prozedurale Sprache. Da jetzt noch ein bischen OOP drauf zu packen
führt unweigerlich dazu das das Gesamtkonzept an einigen Stellen nichtmehr
wirklich stimmig ist.
Ein Beispiel dazu ist das was ZeHa angesprochen hat:
Eine OO Sprache mit einem rein prozeduralen Befehlssatz ist Schwachsinn. Auf der anderen Seite
war es immer unsere Philosophie das es in PB (im Gegensatz zu z.B. der Perl Philosophie) nicht
mehrere Wege geben soll um die gleiche, grundsätzliche Funktionalität (hier aufruf einer Library Funktion)
zu erreichen. Einfach jede Lib doppelt zu haben als OO und nicht-OO Version würde
dem aber sehr stark entgegen sprechen.
Das führt dann dazu, das in Resourcen wie Forum, Codearchiv etc, ein totaler
Mischmasch vom Einen und Anderen zu finden ist und Leute die ihre Codes
darauf aufbauen haben dann einen totalen Salat von OO und nicht-OO in ihrem Code.
Wer jetzt kommt und mir weismachen will das das ja kein Problem sei, der hat
keine Ahnung was gute Software-Architektur ist.
(Es gibt noch mehr Aspekte des Designs von PB die gegen eine OO Implementierung sprechen,
aber da will ich jetzt nicht im Einzelnen drauf eingehen.)
Was mich zum zweiten Punkt bringt:
Es ist unsere Meinung (und ja, wir haben viel OOP Erfahrung und sind mit dieser Meinung in der
Softwarewelt auch nicht allein) das solche "Hybrid-Sprachen" nicht die beste Sache sind.
Die wahre Stärke des OO Paradigmas kommt erst dann zu Tage wenn man es
auch vollständig nutzt. Dazu benötigt man eine Sprache die von Grund auf
als OO Sprache konzipiert wurde, und die einen auch dazu zwingt vollständig
OO zu programmieren, und nicht bei jeder Gelegenheit in andere Paradigmen zurück zu fallen.
Eine Sprache der OOP erst nachträglich aufgesetzt wurde kann das nicht.
Ich finde es interessant das C++ hier oft als das "Ein und Alles der OOP Programmierung"
dargestellt wird. Dabei ist das was ich soben genannt habe einer der
Hauptkritikpunkte an C++: Durch seine Herkunft vom prozeduralen C
macht es C++ dem Programmierer sehr einfach einen wunderbar abscheulichen
Mix von OO und prozeduralem Code zu schreiben.
Das macht C++ nicht zu einer schlechten Sprache, aber zu mindest wenn es darum
geht wirklich guten OO Code zu schreiben gibt es vielleicht bessere Alternativen.
In diesem Punkt kann man durchaus auch anderer Meinung sein, aber wir
sind jedenfalls der Meinung das die besten OO Sprachen diejenigen sind die
von Grund auf als solche konzipiert wurden, und das trifft für PB eben nicht zu.
Jetzt aus einer "wir wollen es allen Recht machen"-Mentalität herraus noch
ein bischen OO draufzuklatschen führt unserer Meinung nach nicht zu einem guten Ergebnis.
(Möglich ist es auf jeden fall, aber gut muss es damit noch lange nicht sein)
Wenn man sich in der Landschaft der moderneren Basicdialekte mal umsieht
findet man sehr viele die diesen Weg gegangen sind und OO Features anbieten.
Wer also genau das haben will hat durchaus alternativen zur Verfügung und
muss nicht für immer darauf hoffen das PB sowas bringt.
Um es zusammenzufassen:
- wer eine gute prozedurale Sprache sucht, für den ist PB das richtige.
- wer ein Basic mit ein bischen OO obendrauf sucht hat in einigen anderen Basicdialekten funktionierende Alternativen.
- wer wirklich gut OO programmieren will sucht sich am besten eine Sprache die dafür entwickelt wurde.
Wir versuchen nicht es auf Biegen und Brechen jedem Recht zu machen.
Es gibt nicht umsonst so viele Programmiersprachen auf der Welt. PB muss also nicht Alles für Jeden sein.
... so, da wollte ich mich kurz fassen und habe trotzdem wieder nen Aufsatz geschrieben.
Wenn der Thread jetzt auch noch im Mülleimer landet werde ich böse,
denn nochmal schreibe ich das alles bestimmt nicht.
Also bitte die Disskussion gesittet weiterführen damit das hier nicht im Chaos endet...
