Warum hat C++ so eine aufwendige Syntax?



  • Holztisch schrieb:

    Na, ich denk mal das es einfacher ist Code zu optimieren, wenn dieser einfacher ist.

    Du verwechselst parsen mit optimieren.

    nur weil ein int m() eine funktion statt einer variablen ist, ist das doch nicht schwerer zu optimieren...



  • long long double schrieb:

    Undertaker schrieb:

    Artchi schrieb:

    Warum ist die Bananne krumm? Könnte man genauso gut fragen... 🙄

    immerhin gibt es dafür eine erklärung: bananen wachsen der sonne entgegen.
    🙂

    Gut, dass C++ nicht Sun entgegenwächst :p

    ja, das wäre echt übel 😃



  • Shade Of Mine schrieb:

    Holztisch schrieb:

    Na, ich denk mal das es einfacher ist Code zu optimieren, wenn dieser einfacher ist.

    Du verwechselst parsen mit optimieren.

    Das war's wohl, worüber ich bei Holztisch's Bemerkungen gestolpert bin.

    @Holztisch:
    Du mußt unterscheiden zwischen dem, was an C++ Code reinkommt, und dem was hinterher an Maschinencode entsteht. Und auf Maschinenebene sind solche Konstrukte wie eine lokale Funktionsdeklaration bedeutungslos (und haben auch keinen Einfluß darauf, wie gut sich etwas optimieren lässt).

    @LordJaxom: Schön, daß ich nicht der einzige bin, dem's auffällt 😃



  • Ich hab mich schon gewundert, wo er ist.



  • Holztisch schrieb:

    CStoll schrieb:

    Holztisch schrieb:

    Wer braucht den ne Funktionsdeklaration in einer Funktion?

    Ist vielleicht nicht alltäglich, aber hin und wieder kommt's schon vor.

    Wann kann man den die Funktionsdeklaration nicht vor die Funktion schreiben?

    Wäre es nicht einfacher für die Compilerhersteller auf solche exotischen Sachen zu verzichten und statt dessen mehr Performanceoptimerung zu machen?

    Sicher kann man es vor die Funktion schrieben, aber amüsanterweise ist es einfacher, eine Deklaration innerhalb der Funktion zu erlauben als sie zu verbieten.
    Die Syntax von C++ ist in vielerlei Hinsicht einfacher als die von "einfacheren" Sprachen, allerdings muss man die Einfachheit dahinter verstehen. Um die Syntax einfach zu halten, muss auch sowas wie Klasse = Wert möglich sein.

    Wenn Du der Meinung bist, dass Du gute Ideen, wie eine alternative Syntax für diverse Konstrukte hast, so bin ich grundsätzlich interessiert.
    Es gibt genug, dass man auch an C++ verbessern kann, aber grundsätzlich muss man C++ als eine der besten Sprachen auf dem Markt akzeptieren.



  • Xin schrieb:

    ...aber grundsätzlich muss man C++ als eine der besten Sprachen auf dem Markt akzeptieren.

    weil sie weit verbreitet ist bzw. oft genutzt wird, oder wieso meinst du das?
    🙂



  • SammyRukka schrieb:

    Aber egal, wenn die Syntax einfacher sein soll, dann empfehle ich immernoch Java (sorry an alle C++-Jünger)

    Stimmt, ein a.add(b) sieht tausendmal besser aus als ein a += b 🙄 .



  • Walli schrieb:

    SammyRukka schrieb:

    Aber egal, wenn die Syntax einfacher sein soll, dann empfehle ich immernoch Java (sorry an alle C++-Jünger)

    Stimmt, ein a.add(b) sieht tausendmal besser aus als ein a += b 🙄 .

    Du mußt aber zugeben, dass man schon ne Menge Arbeit reinstecken muß, bis man ne Klasse gebaut hat, die sich vollständig und vernünftig mit den Operatoren bearbeiten lässt.



  • Jester schrieb:

    Du mußt aber zugeben, dass man schon ne Menge Arbeit reinstecken muß, bis man ne Klasse gebaut hat, die sich vollständig und vernünftig mit den Operatoren bearbeiten lässt.

    Und für wen soll das jetzt ein Argument sein? Eine Methode add() zu schreiben ist genauso einfach oder schwierig wie die Methode 'operator+=' - sie hat nur einen anderen Namen.



  • Wie oft habt ihr denn schon eine "add/+" Methode geschrieben? Wieviele Methoden habt ihr schon geschrieben, bei denen es keinen passenden operator gibt? Manche können ja << und >> für alles nehmen, naja...



  • mal ehrlich schrieb:

    Wie oft habt ihr denn schon eine "add/+" Methode geschrieben?

    Ich will nicht sagen, daß ich es täglich mache, aber es kommt vor. Und wenn sich hinter einer Methode eine Addition (im weitesten Sinne) verbirgt, finde ich op+ auf jeden Fall eleganter anzuwenden als ein add().

    Wieviele Methoden habt ihr schon geschrieben, bei denen es keinen passenden operator gibt?

    Wohl deutlich mehr - aber das spricht doch nicht gegen die Möglichkeiten der Operator-Überladung.



  • CStoll schrieb:

    Und für wen soll das jetzt ein Argument sein? Eine Methode add() zu schreiben ist genauso einfach oder schwierig wie die Methode 'operator+=' - sie hat nur einen anderen Namen.

    man kann in C++ mehr falsch machen, z.b. pointer statt referenzen zurückgeben oder eine referenz auf eine lokale variable zurückgeben und schon geht gar nix mehr.
    ...und ausserdem gehört zu einem 'operator+=' auch noch ein 'operator+', sonst ist es nicht komplett.
    🙂



  • Undertaker schrieb:

    CStoll schrieb:

    Und für wen soll das jetzt ein Argument sein? Eine Methode add() zu schreiben ist genauso einfach oder schwierig wie die Methode 'operator+=' - sie hat nur einen anderen Namen.

    man kann in C++ mehr falsch machen, z.b. pointer statt referenzen zurückgeben oder eine referenz auf eine lokale variable zurückgeben und schon geht gar nix mehr.

    Was hat das bitteschön mit Operator-Überladung zu tun?

    ...und ausserdem gehört zu einem 'operator+=' auch noch ein 'operator+', sonst ist es nicht komplett.
    🙂

    Wer sagt das?

    PS: Ich hab's schon bei deiner letzten Inkarnation aufgegeben, dir die Vorteile von C++ erklären zu wollen - das Spiel fange ich jetzt nicht wieder von vorne an.



  • CStoll schrieb:

    mal ehrlich schrieb:

    Wie oft habt ihr denn schon eine "add/+" Methode geschrieben?

    Ich will nicht sagen, daß ich es täglich mache, aber es kommt vor. Und wenn sich hinter einer Methode eine Addition (im weitesten Sinne) verbirgt, finde ich op+ auf jeden Fall eleganter anzuwenden als ein add().

    Wieviele Methoden habt ihr schon geschrieben, bei denen es keinen passenden operator gibt?

    Wohl deutlich mehr - aber das spricht doch nicht gegen die Möglichkeiten der Operator-Überladung.

    Naja, ich finde es halt komisch, weil hier immer wieder Operatorüberladung als tolles Feature angepriesen wird, obwohl man es vlt. in 5% aller Fälle einsetzen kann.

    PS: Jetzt wurde am Anfang nix von Java erwähnt, aber sobald es einmal gesagt wurde, gibts hier wieder Java vs C++...



  • mal ehrlich schrieb:

    CStoll schrieb:

    mal ehrlich schrieb:

    Wie oft habt ihr denn schon eine "add/+" Methode geschrieben?

    Ich will nicht sagen, daß ich es täglich mache, aber es kommt vor. Und wenn sich hinter einer Methode eine Addition (im weitesten Sinne) verbirgt, finde ich op+ auf jeden Fall eleganter anzuwenden als ein add().

    Wieviele Methoden habt ihr schon geschrieben, bei denen es keinen passenden operator gibt?

    Wohl deutlich mehr - aber das spricht doch nicht gegen die Möglichkeiten der Operator-Überladung.

    Naja, ich finde es halt komisch, weil hier immer wieder Operatorüberladung als tolles Feature angepriesen wird, obwohl man es vlt. in 5% aller Fälle einsetzen kann.

    Das ist ja das tolle an C++ - es gibt viele Sachen, die zwar selten angewendet werden, aber trotzdem nützlich sind (ich glaube z.B. nicht, daß schonmal jemand ALLE STL-Funktionen praktisch eingesetzt hat - aber wenn man sie braucht, ist für fast jeden Zweck etwas vorhanden).

    PS: Jetzt wurde am Anfang nix von Java erwähnt, aber sobald es einmal gesagt wurde, gibts hier wieder Java vs C++...

    Und das wundert hier noch irgendjemanden?



  • CStoll schrieb:

    Undertaker schrieb:

    CStoll schrieb:

    Und für wen soll das jetzt ein Argument sein? Eine Methode add() zu schreiben ist genauso einfach oder schwierig wie die Methode 'operator+=' - sie hat nur einen anderen Namen.

    man kann in C++ mehr falsch machen, z.b. pointer statt referenzen zurückgeben oder eine referenz auf eine lokale variable zurückgeben und schon geht gar nix mehr.

    Was hat das bitteschön mit Operator-Überladung zu tun?

    einiges. guckst du z.b: http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html
    sowas würde ich mir mindestens zu gemüte führen, bevor ich überhaupt anfange, op's zu überladen.

    CStoll schrieb:

    ...und ausserdem gehört zu einem 'operator+=' auch noch ein 'operator+', sonst ist es nicht komplett.
    🙂

    Wer sagt das?

    mein empfinden sagt mir das. eine klasse mit += operator sollte auch +,=,- und -= implementieren, sonst wäre ich damit sehr unzufrieden.

    CStoll schrieb:

    PS: Ich hab's schon bei deiner letzten Inkarnation aufgegeben, dir die Vorteile von C++ erklären zu wollen - das Spiel fange ich jetzt nicht wieder von vorne an.

    du musst doch nicht den c++ missionar spielen.
    wir können uns einfach locker über das thema unterhalten, oder?
    🙂



  • Ach du schei***! Ist Undertaker Vista? Oh waier! Geht die Kinderkacke wieder von vorne los. 👎



  • Undertaker schrieb:

    CStoll schrieb:

    Undertaker schrieb:

    CStoll schrieb:

    Und für wen soll das jetzt ein Argument sein? Eine Methode add() zu schreiben ist genauso einfach oder schwierig wie die Methode 'operator+=' - sie hat nur einen anderen Namen.

    man kann in C++ mehr falsch machen, z.b. pointer statt referenzen zurückgeben oder eine referenz auf eine lokale variable zurückgeben und schon geht gar nix mehr.

    Was hat das bitteschön mit Operator-Überladung zu tun?

    einiges. guckst du z.b: http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html
    sowas würde ich mir mindestens zu gemüte führen, bevor ich überhaupt anfange, op's zu überladen.

    Ja, bei der Operator-Überladung mußt du diese Probleme beachten. Aber bei der Arbeit mit "normalen" Methoden gelten diese Probleme genauso.

    CStoll schrieb:

    ...und ausserdem gehört zu einem 'operator+=' auch noch ein 'operator+', sonst ist es nicht komplett.
    🙂

    Wer sagt das?

    mein empfinden sagt mir das. eine klasse mit += operator sollte auch +,=,- und -= implementieren, sonst wäre ich damit sehr unzufrieden.

    Aber eine Klasse, die zwar eine Methode add() (mit += Semantik), aber keine copy_add() etc anbietet, würde dich glücklicher machen?

    CStoll schrieb:

    PS: Ich hab's schon bei deiner letzten Inkarnation aufgegeben, dir die Vorteile von C++ erklären zu wollen - das Spiel fange ich jetzt nicht wieder von vorne an.

    du musst doch nicht den c++ missionar spielen.
    wir können uns einfach locker über das thema unterhalten, oder?
    🙂

    Ich spiele nicht den Missionar. Ich hab' nur keine Lust, mit dir über das Thema zu diskutieren.



  • Artchi schrieb:

    Ach du schei***! Ist Undertaker Vista? Oh waier! Geht die Kinderkacke wieder von vorne los. 👎

    Und du bist, wie eigentlich immer, wieder voll mit dabei. 🙄



  • CStoll schrieb:

    Und für wen soll das jetzt ein Argument sein? Eine Methode add() zu schreiben ist genauso einfach oder schwierig wie die Methode 'operator+=' - sie hat nur einen anderen Namen.

    Ach? So einfach ist das? Wie sieht's mit Konvertierungen aus, unärem -, normales + als Member oder nicht? Implementierung von + über += etc. alles wichtige Sachen, die man erstmal erlernen muß. Sich da hinzustellen und zu sagen "ist ja alles bloß ne funktion" ist wohl reichlich kurz gedacht. Es gibt jede Menge zusätzliche Dinge zu beachten. Dass man damit tolle Sachen machen kann steht außer Frage, aber man muß es halt erstmal lernen. Und da steckt (steht hoffentlich ebenfalls außer Frage) deutlich mehr drin, als einfach nur Funktionen zu schreiben.


Anmelden zum Antworten