Ist ++i anders als i++???



  • Ich habe gemerkt, das viele professionelle Programmierer (also die, deren Beruf das Programmieren ist) weniger über C++ wissen als ich. Und das finde ich irgendwie erschreckend, da C++ bei mir nur ein Hobby ist.

    Und was die ganze Disskussion hier bringen soll, weiß ich auch nicht. Ein einfaches ++i ist semantisch korrekter, in vielen Situationen schneller, egal wie borniert JoelH ist. Und dann noch der Rat an Nubees nie auf JoelH zu hören.



  • Helium schrieb:

    Ich habe gemerkt, das viele professionelle Programmierer (also die, deren Beruf das Programmieren ist) weniger über C++ wissen als ich. Und das finde ich irgendwie erschreckend, da C++ bei mir nur ein Hobby ist.

    Deine Feststellung lässt sich einfach begründen.
    Die 'professionellen Programmierer' haben eine einfache Zielsetzung: es muß laufen.
    Bei Dir ist es Hobby, also schaust Du dir alles mal an und probierst/liest nach/etc. Ein 'pP' hat meistens keine Zeit/Lust.

    In dieser Hinsicht lassen sich auch Beispiele in anderen Berufsgruppen finden.



  • daishi schrieb:

    Ein 'pP' hat meistens keine Zeit/Lust.

    Stimme ich dir zu. Viele Berufsprogrammierer die wirklich geile Programme schreiben, haben nicht die Zeit sich das ganze Zeug anzueignen. Deswegen sollten wir dankbar sein, dass wir (noch) anscheinend alle genug Zeit haben um ins Forum zu kommen und unseren Horizont zu erweitern. Ich verstehe allerdings nicht was die Diskussion hier soll. JoelH hat anscheinend schon nach 3 Posts begriffen was ihr ihm sagen wolltet. Wenn er es nicht annimmt ist das doch seine Sache solange er diesen verbohrten "Pascal...Basic...und ein bisschen C"-Mix hier nicht an die Anfänger im Forum weitergibt.



  • Die 'professionellen Programmierer' haben eine einfache Zielsetzung: es muß laufen.

    Falschrum gedacht. Ähnlich wie: "Ich habe keine Zeit, deshalb lasse ich das Testen dieses eine Mal ausfallen". Am Ende kommt alles wieder zurück. Und dann meist doppelt. Vielleicht lässt sich die "hauptsache es läuft"-Lösung auf den ersten Blick schneller erstellen, aber erstellen ist nicht das einzige im Softwerker-Leben. Code muss schließlich getestet, gewartet und erweitert werden.

    Ich bezweifle allerdings auch, dass wirklich professionelle C++ Programmierer weniger Ahnug haben als unser einer. Wenn ich mir da so Magazine wie das CUJ, oder das DrDobbs-Journal anschaue oder ein bischen in englischsprachigen NGs rumsurfe, präsentiert sich mir da ein anderes Bild. Und das sind alles professionelle Programmierer. Nix ausschließlich Hobby.

    Ist zwar etwas OT, aber prinzipiell gefällt mir da Uncle Bob's (Robert C. Martin) We will not ship shit-Einstellung. Die setzt natürlich kontinuierliches lernen voraus. Ein "Hauptsache es läuft" ist da nicht ausreichend.



  • 😃 Endlich mal wieder eine schöne Diskussion. 😃

    Als ich vor einiger Zeit folgende Frage dazu stellte

    Was spricht gegen das Post increment?

    kam folgende Antwort

    Beim Postinkrement muss erst eine temporäre Variale angelegt werden, die den alten wert speichert und zurück gibt.



  • Wenn ich folgenden Vergleich durchführe.

    #include <iostream>
    #include <ctime>
    #include <conio.h>
    using namespace std;
    
    int main()
    {
      const int MAX;
      cout << "Anzahl Schleifendurchlaeufe? ";
      cin >> MAX;
      clock_t t1,t2;
      double ts;
    
      t1=clock();
      for(int i=0;i<(MAX);i++) {} 
      t2=clock();
      ts=(t2-t1)/static_cast<float>(CLOCKS_PER_SEC);
      cout << "Zeit bei i++: " << ts << " sec" << endl;
      cout<<endl;       
    
      t1=clock();
      for(int i=0;i<(MAX);++i) {} 
      t2=clock();
      ts=(t2-t1)/static_cast<float>(CLOCKS_PER_SEC);
      cout << "Zeit bei ++i: " << ts << " sec" << endl;
      cout<<endl;       
    
      getch();
    }
    

    Warum erhalte ich bei dem hier bevorzugten Praeinkrement eine längere Zeitspanne als bei Postinkrement? (Dev-C++ 4.9.8.2)



  • Warum erhalte ich bei dem hier bevorzugten Praeinkrement eine längere Zeitspanne als bei Postinkrement? (Dev-C++ 4.9.8.2)

    1. Wenn man misst, dann bitte nicht nur einmal. Mindestens eine Schleife sollte es sein. Dann Ausreißer weghauen und vielleicht noch Mittelwerte bilden.

    2. Wenn man misst, dann bitte nicht nur mit einem Compiler in einer Version

    3. Wenn man misst und es ist etwas so furchtbar einfaches, dann ruhig mal den Code anschauen, der generiert wird.

    4. Ist euch klar, dass das für ints überhaupt keine Rolle (aus Sicht der Performance) spielt? Jeder halbwegs normale Compiler sollte hier genau den selben Code generieren. Selbst jeder Java-Compiler generiert für ++i, i++ und i+=1 den selben Code.

    Wichtig wird der Unterschied bei richtigen Objekten (z.B. komplizierten Iteratoren). Für Postincrement muss hier eine Kopie erstellt werden. Und das kann teuer werden. Ansonsten geht es hier eigentlich mehr um Semantik.
    PS: Mein VC generiert im Debug-Modus den selben Code und im Release gar keinen 🙂



  • worüber ihr so diskutieren könnt, Wahnsinn!

    und dann immer diese genialen Messungen:) Fehlt eigentlich nur noch, dass Ihr Linux und Windows mit ins Spiel bringt. Ich schwanke ja immer zwischen dem C-PlusPlus Forum und den beiden netten Herren Nachts auf Bayern3, die sich nen Kopf drüber machen ob Ihr Gehirn aus Sterbenstaub ist 🙂



  • Das C++-Forum läuft rund um die Uhr. Die mental-astralen Rotweintrinker gibt es seltener. 😉 Was ist denn an der Messung oben so falsch?



  • Die mental-astralen Rotweintrinker gibt es seltener

    hehe nett formuliert 🙂

    Naja ich glaube es es echt keinen Unterschied macht ob das prog nun ne 1000 Sek. länger brauch oder nich.. es sei denn es kommt wirklich drauf an. Kommt es denn drauf an? 😃



  • Warum erhalte ich bei dem hier bevorzugten Praeinkrement eine längere Zeitspanne als bei Postinkrement? (Dev-C++ 4.9.8.2)

    Lass in deinem Programm mal erst zwei Dummymessungen laufen und mach erst dann die richtigen. Messungen direkt am Anfang des Programms machen bei dem Compiler oft irgendwie Blödsinn.

    Ich bezweifle allerdings auch, dass wirklich professionelle C++ Programmierer weniger Ahnug haben als unser einer. Wenn ich mir da so Magazine wie das CUJ, oder das DrDobbs-Journal anschaue oder ein bischen in englischsprachigen NGs rumsurfe, präsentiert sich mir da ein anderes Bild. Und das sind alles professionelle Programmierer. Nix ausschließlich Hobby.

    Das die Leute, die für's CUJ und ähnliche Magaziene schreiben was drauf haben habe ich nie bezweifelt. Die die Regelmäßig im Usenet rumhängen sind auch nicht die von mir angesprochene Gruppe. Ich habe aber Programmierer kennengelernt, die sich irgendwie die letzten paar Jahre quasi überhauptnicht mehr informiert haben. Ich habe sogar einen getroffen, der C++ bis 93 gelernt hat und seit dem nichts neues mehr gelesen hat. Ich sage nicht das alle sosind und auch das viele war falsch, aber es scheint mir einige zu geben.



  • Ich sage nicht das alle sosind und auch das viele war falsch, aber es scheint mir einige zu geben.

    Sicher gibt es solche. Und es gibt bestimmt auch viele.
    Die Frage ist aber natürlich auch was man genau mit "professionell" meint. Wertfrei nur im Sinne von "bekommt Geld dafür" oder packt man gleich noch einen gewissen Anspruch mit dran. Für mich gehört zu "professionell" automatisch immer auch eine gewisse Qualität. D.h. ich würde jemand der Jahre lang nichts neues lernt und vielleicht nichtmal genau was, was er eigentlich macht nicht unbedingt als "professionell" bezeichnen. Insofern reden wir natürlich an einander vorbei 🙂



  • please give an code example with time measurement that pre is faster than post. Think would help. 🙂


Anmelden zum Antworten