C oder C++
-
C++ Rocks!
http://msdn.microsoft.com/de-de/library/wf867f8f(VS.80).aspx
http://msdn.microsoft.com/de-de/library/sah8k6f4(VS.80).aspxSpätestens beim zweiten Error-Code weiß man, das da was nicht zusammen passt. Dann schaut man in die Std-Lib-Doku, und weiß das list eine eigene Sort-Funktion bereitstellt.
Den Fehler begeht denke ich mal jeder Std-Lib-Anwender in seiner Anfangszeit. Den Fehler hatte ich damals auch gemacht, std::sort() mit list anwenden zu wollen. Nach einem Blick in der Doku habe ich das nach ein paar Sekunden korrigiert bekommen. Vorausgesetzt man weiß das es unterschiedliche Iterator-Kategorien gibt. Das sind aber C++-Basics!
-
wenn das basics sind, möchte ich ja nicht wissen mit was für fehlermeldungen sich der fortgeschrittene C++ programmierer so herumschlagen muß^^
-
C++ Rocks schrieb:
Entschuldige Artchi, du hast natürlich Recht. Die Meldungen des Visual Studio Compilers sind sogar noch aussagekräftiger
... std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator' ...
28 KB Fehlermeldung
auf diesem Platz könnte man in Forth ein Betriebssystem programmieren, inkl. Compiler ... alternativ *n*x fahren, die PDP 11/20 hatte 1971 ungefähr so viel Speicher im Vollausbau
-
mukuh schrieb:
wenn das basics sind, möchte ich ja nicht wissen mit was für fehlermeldungen sich der fortgeschrittene C++ programmierer so herumschlagen muß^^
Fehlermeldungen? Schön wärs
-
C++ Rocks schrieb:
basti431 schrieb:
Aber nur so am rande. Warum ist cout so viel umständlicher als printf? Ich merke nur das es durch die vielen "<<" hässlicher ist
C
printf("(%8.2f,%8.2f)\n", x, y);
C++
std::cout << "(" << std::setprecision(2) << std::setiosflags(std::ios::fixed) << std::setw(8) << x << "," << std::setw(8) << y << ")" << endl;
Also ich finde den C++ Code weitaus intuitiver und übersichtlicher!
Ist doch interessant dass der kurze formatstring "(%8.2f,%8.2f)\n" ganze zwei Zeilen c++ code ersetzt.
Das nenne ich mal minimalen Aufwand: Man braucht nur:
cout, setprecision, setiosflags, ios::fixed, setw und 674594 '<<'s und schon hat man den format string ersetzt.Diese Diskussion printf vs cout erinnert mich an folgendes Beispiel: Wegbeschreibung.
C: Mit printf bekommt man die Wegbeschreibung in Form einer Karte, auf der man auf einen Blick alles überblicken kann.
C++: Hier wird der weg manuell beschrieben ala "gehe gerade aus << drehe dich nach links << schau dich um ob kein Gegenverkehr kommt << fahre dann 40 meter << im Kreisverkehr die zweite raus [...]"
Also cout muss wohl ein wahren Pragmatiker entworfen haben.
-
Ist aber total irrelevant. Willst Du süße Formatierung, nimmst Du eh Klickibunti.
Genauso die Länge mancher Fehlermeldungen. Die fallen in der Praxis gar nicht auf.
-
volkard schrieb:
Genauso die Länge mancher Fehlermeldungen. Die fallen in der Praxis gar nicht auf.
weils sie sowieso keiner liest. angeblich gibt's sogar tools, die fehler eines C++ compilers in menschenlesbare form übersetzen können (in eine zeile oder so).
-
/fricky schrieb:
weils sie sowieso keiner liest.
Du hast Recht, meistens reicht es, die erste Fehlermeldung zu lesen.
-
Nexus schrieb:
/fricky schrieb:
weils sie sowieso keiner liest.
Du hast Recht, meistens reicht es, die erste Fehlermeldung zu lesen.
Und oft reicht es, nur die Fehlerzeile zu wissen.
Bei den Monstern kommt in meinem Hirn nur "Templatefehler" an und dann schaue ich, was im Code an dieser Zeile einen Templatefehler macht.
-
Im neuen Standard gibt es doch static_assert. Könnte man dann die Fehlermeldung nicht wesentlich besser gestalten. Z.B.:
Incompatible iterator types. Expected: random access; Used: bidirectional
Vielleicht ists ja sogar im Visual C++ 2010 schon eingebaut (static_assert wird ja unterstützt).
-
Ohne Python und C++ gegenüberstellen zu wollen, aber die python exceptions sind deutlich aussagekräftiger. Okay, ich muss eingestehen, die exceptions sind auch runtime-Meldungen.
Aber prinzipiell hat C++Rocks recht mit seinem Sarkasmus.
-
Ich hab schon öfters gehört, daß die meisten C++ Programmierer die Fehlermeldungen des Compilers nicht verstehen und quasi solange am Code rumpantschen, bis er dann irgendwann kompiliert
-
Rµfus schrieb:
Ich hab schon öfters gehört, daß die meisten C++ Programmierer die Fehlermeldungen des Compilers nicht verstehen und quasi solange am Code rumpantschen, bis er dann irgendwann kompiliert
Wieso kommen eigentlich alle Postings mit fricky-Niveau von unregs?
-
volkard schrieb:
Rµfus schrieb:
Ich hab schon öfters gehört, daß die meisten C++ Programmierer die Fehlermeldungen des Compilers nicht verstehen und quasi solange am Code rumpantschen, bis er dann irgendwann kompiliert
Wieso kommen eigentlich alle Postings mit fricky-Niveau von unregs?
Glaube die Krankheit nennt man Schizophrenie :D!
-
Schon mal auf die abwegige Idee gekommen, dass es mehr Menschen (als "nur" fricky) auf der Welt gibt, die weniger zufrieden mit C++ sind?
-
volkard schrieb:
Wieso kommen eigentlich alle Postings mit fricky-Niveau von unregs?
keine ahnung. vielleicht sind registrierte in der mehrzahl traditionsbewusste spiessbürger, die an altem kram festhalten, egal wie nutzlos wer mittlerweile ist?
ein anderer unreg schrieb:
Schon mal auf die abwegige Idee gekommen, dass es mehr Menschen (als "nur" fricky) auf der Welt gibt, die weniger zufrieden mit C++ sind?
irgendwie scheinen es auch immer mehr zu werden. diese ganzen threads in letzter zeit, zu dem thema, finde ich schon bemerkenswert. die waren früher viel seltener.
-
mukuh schrieb:
wenn das basics sind, möchte ich ja nicht wissen mit was für fehlermeldungen sich der fortgeschrittene C++ programmierer so herumschlagen muß^^
Fortgeschrittene machen solche Fehler nicht mehr.
-
Artchi schrieb:
Fortgeschrittene machen solche Fehler nicht mehr.
fortgeschrittene machen auch fehler, vielleicht seltener, dafür aber wohl viel diffizilere.
-
Natürlich machen Fortgeschrittene Fehler. Aber es sind meistens Laufzeitfehler. Den sort-list-Fehler von oben macht man genau einmal! Der wird einem ewig im Gedächtnis bleiben! Das meinte ich mit, das ein Fortgeschrittener diesen Fehler nicht mehr machen wird. Wer immer wieder std::sort auf list anwendet, weil er immer wieder darauf rein fällt und dann ewig am rätseln ist, sollte den Job als Programmierer an den Nagel hängen.
-
Artchi schrieb:
Fortgeschrittene machen solche Fehler nicht mehr.
Unsinn! Auch Chefsekretärinnen vertrippen sich mal, der routinierteste Coder hat mal den einen oder anderen Aussetzer - als Ergebnis seitenweise Kauderwelsch macht keinen Spaß, auch wenn man ihn "irgendwie" doch entschlüsseln kann.
Prinzipiell ist das ja aber ein generelles Compilerproblem, kann man aussagekräftiger oder weniger schön machen, ist aber nicht auf CPP-Compiler beschränkt. Ich hab' da irgendwo ein schönes Lehrstück, das bei der Migration von VB 5 nach VB 6 auf 400 Zeilen Code weit über 1000 Warnings produziert - das Compilat läuft prinzipiell trotzdem, produziert im benörgelten Bereich aber Blödsinn. Die meiste Zeit beim compilieren geht übrigens tatsächlich für das Listen der Warnings drauf.
Nach VB.NET hat's die Applikation dann doch nicht mehr geschafft, zuviele kryptische errors mit noch kryptischeren Migrationshinweisen in der KB.