Jetzt kommt es auf die Länge an!



  • Da kannte ich mal einen Programmierer bei einem staatsnahen Unternehmen. Der liess sich bei jedem Programmlauf einen kompletten Hexdump ausdrucken und kiloweise auf Papier an den Arbeitsplatz bringen. Es waren jeweils Rollwagen erforderlich. Wer will denn so etwas noch? 😕



  • Was hat er damit denn angefangen? 😕

    Edit: Der stand doch bestimmt auf die Bürohilfe?



  • Decimad schrieb:

    Naja, ich war irgendwie davon ausgegangen, dass sich niemand die Mühe machen würde, hier künstlich Linker-Fehler zu produzieren. Hatte gehofft, dass eher Linker-Fehler aus der praktischen Produktion hier auftauchen, und viel davon mit Boost zu tun hat 😉

    Ich hatte durchaus ein paar Fehlermeldungen die da passen würden.
    Wobei es nicht immer nur Linkerfehlermeldungen sind, ganz lustig sind oft auch welche wo er keinen passenden Overload findet, und dann die Liste der gefundenen Funktionen mit dem Namen ausspuckt die alle nicht passen. Das kann dann auch gleich mal über ein paar Bildschirmseiten gehen.
    Nur dass ich mir diese Meldungen nicht aufhebe, ich fixe den Code dann halt und das wars dann.



  • Wenn nicht gerade Wochenende ist, halte ich es eigentlich genauso 🙂



  • Ich hatte gerade 65 Errors weil ich eine geschweifte Klammer zu viel hatte...
    Bis man da erst mal drauf kommt. 😡
    Dämlicher Tippfehler. 🙄



  • Nathan schrieb:

    Ich hatte gerade 65 Errors weil ich eine geschweifte Klammer zu viel hatte...
    Bis man da erst mal drauf kommt. 😡

    Das kommt mit der Erfahrung.
    Irgendwann bekommt man nen Riecher dafür was der Fehler sein könnte.



  • Will mal gerade reinschauen, was sehe ich da!? volkard ist zurück?



  • hustbaer schrieb:

    Das kommt mit der Erfahrung.
    Irgendwann bekommt man nen Riecher dafür was der Fehler sein könnte.

    Beispiel: Ist nicht mir passiert, sondern sah es bei zwei Studienkollegen (Damals gab es nicht genug Rechner und man mußte immer zu zweit einen Rechner benutzen, hoffe, es ist inzwischen besser.). Der andere war Nube. Der eine war verdammt flink. Wie ich konnte er schon vor Studienbeginn programmieren. Bei Standardaufgaben war er tatsächlich doppelt so schnell wie ich. Da suche ich noch die Tasten, die ich drücken muss, und sein Programm läuft schon korrekt.

    Ganz fieses Fach für manche, Praktikum zu numerischer Mathematik.

    //numerische integration zwischen x=3 und x=5 durchführen, 3 und 5 sind 
       //fest über alle messungen. es soll geschaut werden, wie die anzahl der 
       //stützstellen das ergebnis beeinflusst. 
    int left=3;
    int right=5;
    //100 stützstellen laut aufgabenstellung, wird dann 
       //auch 200, 500, 1000 sein. 
    int n=100;
    
    double s=0;
    for(double x=left;x<right;x+=(right-left)/n){
       s+=func(x);
    

    Die Ärmsten haben daran mehr als 24 Stunden daran gesucht. Die sind dabei um Jahre gealtert.

    Ich schaute es mir an, und es war mir direkt klar. Das hatten sie sich in was hereingeritten, köstlich.

    Rätsel an Anfänger: Warum klappt das so so gar nicht?

    Natürlich hab ich's nur so schnell gefunden, weil ich selber genau diesen Fehler vorher schon oft genug gemacht hatte. Geschwindigkeit im Fehlerfinden ist einfach nur Erfahrung, die Sammlung der Fehler, die man selber gemacht und gelöst hat.

    Seit ca 15 Jahren dominiert bei mir eine Fehlerklasse alle anderen total: Um gewisse Einflüsse zu redizieren, ersetze ich eine Funktion durch einen Dummy. Dann vergesse ich die Ersetzung und arbeite an der Funktion weiter. Ist alles ganz interkativ noch. Tippfehler werden vom Compiler bestraft. Ich baue die Funktion um wie wild. Bis zu einer soooo offensichtlichen Funktion, daß sie ganz ganz gewiß fehlerfrei ist. Und doch klappt es nicht. Haha, löl. Die Funktion, an der ich gerade rumbastele, wird ja gar nicht aufgerufen.



  • @hustbaer:
    Ja, kann ich mir vorstellen.
    Ich habe den dann durch systematisches Auskommentieren gefunden.
    Eigentlich stand der auch genauso in der Fehlerliste aber ziemlich in der Mitte...
    Und bei so vielen Fehlern habe ich mir nicht alles durchgelesen. 😃



  • Ja, die int/int-Geschichten habe ich auch durchgemacht 😃



  • volkard schrieb:

    Rätsel an Anfänger: Warum klappt das so so gar nicht?

    Also ich als Anfänger würde nach einem kurzen Blick darauf behaupten, dass es eine Endlos-Schleife wäre wegen double x=left, also, dass x immer 3 bleibt. 😶
    (Hoffe liege richtig und du meinst nicht die fehlende geschweifte Klammer am Ende 😃 )



  • xStrykex schrieb:

    volkard schrieb:

    Rätsel an Anfänger: Warum klappt das so so gar nicht?

    Also ich als Anfänger würde nach einem kurzen Blick darauf behaupten, dass es eine Endlos-Schleife wäre wegen double x=left, also, dass x immer 3 bleibt. 😶

    Jain, eine Endlosschleife entsteht, aber dein warum ist falsch. Die Antwort hat Decimad schon gepostet 😉



  • Decimad schrieb:

    Jetzt kommt es auf die Länge an!

    Seit wann kommt es eigentlich auf die Länge an? 😃
    Ich denke es kommt auf Schnelligkeit und Geschmack Eleganz an...



  • Skym0sh0 schrieb:

    Decimad schrieb:

    Jetzt kommt es auf die Länge an!

    Seit wann kommt es eigentlich auf die Länge an? 😃
    Ich denke es kommt auf Schnelligkeit und Geschmack Eleganz an...

    Bin da wegen Länge auch stark irritiert! 😃 Allgemein wird eine Länge in Meter, inch, Ellen oder so gemessen! 🙂



  • Skym0sh0 schrieb:

    Jain, eine Endlosschleife entsteht, aber dein warum ist falsch. Die Antwort hat Decimad schon gepostet 😉

    Decimad schrieb:

    Ja, die int/int-Geschichten habe ich auch durchgemacht 😃

    Da bräuchte ich jetzt ein wenig Erklärungsbedarf 🙂
    Benötigt man etwas wie z.B.

    static_cast<double>(left)
    

    oder wie ist int/int-Geschichte gemeint?



  • Ja, so etwas braucht man.
    Denn wann man int/int teilt, ist das Ergebnis ebenfalls ein int. Und ints haben keinen Nachkommateil...
    Man muss einen int nach double casten um Nachkommateile zu erhalten.



  • Ok, dann ist alles klar.
    Hätte jetzt gedacht, man könne ein double mit einem int verrechnen (z.B. double 5.235 - int 3 = double 2.235), quasi, dass es automatisch den richtigen Typen einsetzt, wenn Ihr versteht was ich meine 😃

    EDIT: Da fällt mir noch ein, dass es den Datentyp "auto" gibt
    Habe hier nen kleines Beispiel gemacht, wär nett, wenn das jemand überprüfen und meine Fragen beantworten könnte. 🙂

    auto _int = 3;
    auto _double = 3.141;
    auto _string = "Test";
    

    1.Frage:
    Wenn ich jetzt schreibe

    auto Ergebnis = _double - _int;
    

    wird dann automatisch aus dem int ein double?

    2.Frage:
    Woher weiß ich, ob er ein float oder ein double setzt? Oder wird immer double gesetzt (zumindest wird es das in allen Beispielen, die ich im Internet gefunden habe)?



  • Das geht ja auch.
    Sobald eine der beiden beteiligten Typen eine Fließkommazahl ist, ist das Ergebnis auch eine, wenn du dass dann aber in einen Integer packst, verschwindet der Nachkommateil wieder.



  • Okidoki.
    Habe noch einen EDIT eingebracht, wär nett, wenn Du/Ihr das auch noch einmal anschauen könntet (habe noch nicht mit dem Typ "auto" gearbeitet). 🙂



  • Jede Kommazahl wird erstmal als Double angesehen, es sei denn du kennzeichnest sie als Float. Und das machst du mit einem f -->

    auto a = 3.14; // double
    auto b = 3.14f; // float
    auto c = 3.14F; // float
    
    auto d = 5; // int
    auto e = 5u; // unsigned int
    auto f = 5l; // long
    

    Dein "Ergebnis" wird zu einem Double...


Anmelden zum Antworten