Mit welcher Programmier Sprache soll ich anfangen?

IKäsebrot schrieb:
Und OOP ist natürlich alles andere als sinnvoll?

OOP ist häufig sinnvoll. OOP um jeden Preis ist es nicht.

Wenn ich eine Klasse aus der Taufe heben muß, nur um die Ausgabe "Hallo Welt!" zu bewerkstelligen, ist was faul im Staate Dänemark.

EDIT: Ich weiß, dass man bei so einem Trivialbeispiel nicht wirklich von OOP reden kann, bloß weil das Wort class im Code vorkommt, aber manche Sprachen sind schon ziemlich aufdringlich mit ihrem was-anderes-als-OOP-geht-nicht mindset.
 
Zuletzt bearbeitet:
Eigentlich wollte ich meinen obligatorischen Java-Rant ja auf den ersten Beitrag beschränken, weil es nicht viel zum Thema beiträgt, aber auf Aufforderung muss man ja quasi schon weiter machen...

Mich würde auch noch interessieren, wo das Problem liegt?
Darin, dass das Beispiel im wahrsten Sinne Äpfel mit Birnen vergleicht...
- was, wie wir alle hoffentlich wissen, semantisch nicht sinnvoll ist
- weil beide nichts miteinander zu tun haben,
- es garantiert nicht beabsichtigt ist
- und sich derjenige, dem der für einen popeligen Vergleich zwingend nötige dynamische Typecast um die Ohren fliegt (...so viel zum Thema Typensicherheit), sich dann stundenlang mit Bad Cast-Exceptions herumärgern darf, bevorzugt bei dreistelliger Calling Stack-Tiefe in der inzwischen glücklicherweise obsoleten Swing-Bibliothek.

Es ist nunmal schwachsinnig, eine Methode, die sich nicht verallgemeinern lässt, per Vererbung von ganz oben nach ganz unten quer durch die gesamte Klassenhierarchie eines Programms durchzureichen. Und genau sowas meine ich mit dogmatischem Hereinwürgen von OOP-Konzepten in wirklich alles und jeden.

Von den wundertollen Wrapper-Klassen für Basistypen will ich mal gar nicht anfangen...

Wenn ich eine Klasse aus der Taufe heben muß, nur um die Ausgabe "Hallo Welt!" zu bewerkstelligen, ist was faul im Staate Dänemark.
...wobei man ja nicht vergessen darf, dass in dem Fall die Klasse nicht einmal instantiiert wird, sondern lediglich eine statische Methode aufgerufen wird. Aber Hauptsache, man hat eine Klasse!
 
Zuletzt bearbeitet:
VikingGe schrieb:

Achso, sag's doch gleich...

Sehe jetzt nicht, wie du von der OOP-Implementierung einer mittlerweile auch schon 20 Jahre alten Sprache auf Für und Wider von OOP schließen möchtest. Bei einigen moderneren Sprachen sind Equals und Co. (und was da sonst so von oben runter durchgereicht wird) beispielweise generisch implementierbar, womit sich das Thema dort erübrigt hat; nicht bei Java, aber es ging ja eigentlich auch nicht um Java..

Wrapper-Klassen sind gleich das nächste Thema hinsichtlich historisch gewachsener Dinge. In Java nerven mich deren Eigenheiten auch, in anderen Sprachen wie Scala sind sie von vornherein sauber als (Wert-)Typen integriert, was auch Sinn macht. Also: wieder ein Implementierungsproblem, sonst nichts.

Und ich stimme natürlich zu, dass man keinesfalls immer OOP benötigt, aber wenn, dann bitte konsequent. Dass main eine Methode ist und zu einer Klasse gehört, ist nur logisch. Das "Hallo Welt" Problem ist einfach nur konstruiert und lässt kaum Relevanz erkennen. Wenn man öfters gerne testweise ein paar Zeilen Code testen will, dann kann man das in anderen OOP-Sprachen mit einer REPL auch tun. Oder man lässt die paar Zeilen für main von jeder x-beliebigen IDE mittels Shortcut generieren... oder man schreibt sie ganz einfach selbst hin, was ein paar wenige Sekunden dauert.
 
Zuletzt bearbeitet:
Sehe jetzt nicht, wie du von der OOP-Implementierung einer mittlerweile auch schon 20 Jahre alten Sprache auf Für und Wider von OOP schließen möchtest.
Ich rede die ganze Zeit konkret von Java und OOP generell verteufeln tu ich ganz sicher nicht. Dachte, das wäre nach diesem Beitrag klar gewesen, der sich ja klar auf eine Java-Empfehlung mit der Begründung, dass man da ja so toll OOP lernen könnte, bezieht.

Aber:
Dass main eine Methode ist und zu einer Klasse gehört, ist nur logisch
Die Umsetzung ist aber schwachsinnig. Die unterscheidet sich vom berühmten int main() nämlich nur dadurch, dass man deutlich mehr tippen muss, um sie irgendwo hinzuschreiben.

Warum nicht die Hauptklasse einer Anwendung mit einem Konstruktor versehen, der die Command Line-Argumente annimmt und das Programm weitesgehend initialisiert, und eine run-Methode definieren, in der dann das eigentliche Programm läuft? Das wäre wenigstens objektorientiert und nicht einfach nur inkonsequent.
 
Zuletzt bearbeitet:
Hm komisch, ich programmiere schon seit über 5 Jahren in .NET (C#) und hatte noch nie das Gefühl, dass mir OOP aufgezwungen wird. Klar in .NET ist alles, wirklich alles ein Objekt. Aber wenn man nicht will, kann man jederzeit und alles auch prozedural implementieren. Ich könnte jederzeit etwas schreiben ohne eine einzige Klasse zu definieren und ohne Polymorphie...

Ich denke wer OOP benutzt wenn es nicht nötig ist, tut es nicht weil es ihm aufgezwungen wird sondern weil er das KISS-Konzept nicht verstanden hat...

Der Code ist immer nur so gut/schlecht wie man ihn selbst gemacht hat.
 
VikingGe schrieb:
Darin, dass das Beispiel im wahrsten Sinne Äpfel mit Birnen vergleicht...
- was, wie wir alle hoffentlich wissen, semantisch nicht sinnvoll ist
- weil beide nichts miteinander zu tun haben,
- es garantiert nicht beabsichtigt ist
- und sich derjenige, dem der für einen popeligen Vergleich zwingend nötige dynamische Typecast um die Ohren fliegt (...so viel zum Thema Typensicherheit), sich dann stundenlang mit Bad Cast-Exceptions herumärgern darf, bevorzugt bei dreistelliger Calling Stack-Tiefe in der inzwischen glücklicherweise obsoleten Swing-Bibliothek.

Natürlich ist das nicht sinnvoll, aber dein Beispiel ist ja auch höchst konstruiert...ich wüsste spontan nicht, wo das in der Java-Realität konkrete Relevanz hätte.

Unabhängig davon entwickle ich zwar so gut wie nie GUIs, kann also gerade bei dem recht betagten Swing nicht wirklich mitreden, aber warum sollte denn ein dynamic typecast überhaupt eine exception werfen?
Wenn man eine eigene equals-Methode schreibt, dann hat die doch zu Beginn ein if mit einem instanceof operator in der condition, sodass alles, was kein Apfel ist (um bei deinem Beispiel zu bleiben) die Ausführung der Methode direkt mit einem return false beendet.
Alles was man dann noch zu tun hat, ist doch lediglich dafür zu sorgen, dass ein Boskoopapfel mit meinetwegen einem Blutapfel beim dynamic typecast kompatibel ist oder bei Inkompatibilitäten eben auch direkt false zurückgegeben wird.

Insofern sitzt doch bei dem Szenario das Problem eher in mangelhafter Planung der OOP-Struktur, als in der Architektur der Sprache?!
 
Vermutung: Der Threadersteller sitzt seit mindestens 20 Posts mit einem Gesicht ähnlich zu dem des :confused_alt:-Smilys vor der Tastatur und fragt sich:
Worüber zur Hölle reden die Herren hier eigentlich?
Was zur Hölle hat das noch mit meiner Frage zu tun?
 
Ich habe 5 Tage die Woche für min 8h einen Tab mit diesem Forum offen. So langsam frage ich mich warum folgendes nicht passiert:

  1. Alle Threads sofort schließen, die so wie dieser sind.
  2. Einen Permathread erstellen in dem wir uns gegenseitig die Schädel einschlagen können, OOP 4tw!
  3. Außerdem würde ich persönlich bei "Nützliche Links für Programmier-Anfänger" auch reinschreiben wozu jede einzelne der Sprachen gut/schlecht ist. So könnte man im Fall von #1 mit gutem Gewissen darauf verweisen.

Nur so als konstruktive Kritik...
 
Nai schrieb:
Was zur Hölle hat das noch mit meiner Frage zu tun?
Guck dir doch die anderen Threads dazu an. "Welche Programmiersprache?" endet immer in Geblubber, wo sich alle die Köppe einkloppen, was nun wie wo wann genau und unter welchen Umständen besser ist. Imho sollte man solche Threads sofort schließen und auf nen Sammler oder Sticky o.ä. verweisen.
 
Dir ist schon klar dass du mit dem Überschreiben der equals() Methode SELBST festlegst wie etwas verglichen wird ? Es ist also nicht sinnloser als das was du zusammen programmierst. Schwachsinnigen Code kannst überall schreiben...

Deine Denkweise finde ich auch total komisch...wie kommt man überhaupt drauf etwas zu kritisieren, weil man damit Mist bauen kann ? :o

Und was ich noch weniger verstehe, wieso kommen hier ständig Leute an und haben das Verlangen Threads & Co. schließen zu wollen, nur weil es SIE SELBST nervt ? Werdet erwachsen und härter in Nehmen...sonst rennen euch die Frauen davon und auch die Community - nichts ist lästiger wenn man grad antworten will und der Thread ist auf einmal dicht, weil irgendwer in seiner kleingeistigen Meinung meint er müsse für den Rest mitbestimmen ;)

Das System des Forums versenkt unbeliebte Threads ganz von alleine in der Tiefe...
 
Zuletzt bearbeitet von einem Moderator:
Nai schrieb:
Vermutung: Der Threadersteller (...fragt sich bestimmt...)
Was zur Hölle hat das noch mit meiner Frage zu tun?

Das mag durchaus sein. Nichtsdestoweniger fand ich es oft hilfreich, wenn in meinen Threads Fachdiskussionen gestartet wurden, denn zum einen hat man dann bestimmte, wichtige Thematiken beim Lernen von neuen Dingen direkt im Hinterkopf und zum anderen kann man fragen, google'n usw. usf. und lernt auf jeden Fall was dabei.

Zumindest meiner Meinung nach kann man einer solchen Fachdiskussion durchaus positiv gegenüber eingestellt sein. Obgleich natürlich ein gewisser Bezug zu der Substanz der Ursprungsthematik gegeben sein sollte, so sind wir hier dennoch nicht bei auf einer Question-Answer-Platform wie etwa StackExchange.

Wir sind in einem Fachforum, wo Fachdiskussionen, so finde ich, definitiv eher begünstigt als gehindert werden sollten und da der aktuelle Diskurs, wie so viele davor, aus der ursprünglichen Unterhaltung hervorging, sie aber dennoch nicht negativ beeinträchtigt, empfinde ich das hier auch nicht im geringsten als störend oder "feindliche Übernahme eines Threads".

Natürlich mag jemand Anderes von dieser Einstellung eventuell abweichen und eine deutlich striktere Etikette sowie Regeln bevorzugen. Das hätte dann natürlich eine Zensierung solcher und ähnlicher Fachdiskussionen zum Ziel...aber wie gesagt, ich befürworte Fachdiskussionen in einem Fachforum und mir würden jegliche Zensuren Bauchschmerzen bereiten.

Zumal, und jenes sollte man nicht vergessen, der Threadersteller ja jederzeit das Recht und die Möglichkeit hat, sich an dem Threadverlauf zu beteiligen und die restlichen Diskussionsteilnehmer zu ermahnen, bitte wieder zum ursprünglichen Thema zurückzukehren...
 
Zuletzt bearbeitet:
IKäsebrot schrieb:
Ich denke wer OOP benutzt wenn es nicht nötig ist, tut es nicht weil es ihm aufgezwungen wird sondern weil er das KISS-Konzept nicht verstanden hat...
Ich finde, damit ist die Sache abschließend besprochen. Objektorientierte Programmierung ist ein Werkzeug und es sollte zum gegebenen Problem passen. Wenn das Werkzeug sinnvoll ist, kann man es mit jeder beliebigen Programmiersprache verwenden, die Abstraktion zusammengesetzter Datentypen anbietet. Viele Sprachen nageln einen dabei starr auf Klassen fest, aber selbst cons reichen zur Implementierung objektorientierter Programmierung.
 
Zurück
Oben