Warum sollte man C und C++ eigentlich nicht mischen... ?
-
pumuckl schrieb:
Nur wenn er erklärt, warum. Und wenn er genauer klarmacht wo endl keinen Sinn macht (und wo es Sinn macht).
Ich halte endl für generell sinnlos. Wenn ich flushen will, flushe ich rasch mit flush.
cout<<"hello, world\n"<<flush;
-
lk schrieb:
Ist die idee vom Programmieren denn eigentlich nicht, alles selbst zu machen? Die völlige Kontrolle zu behalten?
Wenn Du das wirklich konsequent durchziehen willst, müsstest Du mit einem eigenen Betriebssystem beginnen, oder wo genau willst Du die Grenze ziehen?
-
Belli schrieb:
lk schrieb:
Ist die idee vom Programmieren denn eigentlich nicht, alles selbst zu machen? Die völlige Kontrolle zu behalten?
Wenn Du das wirklich konsequent durchziehen willst, müsstest Du mit einem eigenen Betriebssystem beginnen, oder wo genau willst Du die Grenze ziehen?
Hey, ich habs zumindest ein paar monate her geschaft hello world flackernd in verschiedenen farben in QEUM auszugeben
!
-
lk schrieb:
Hey, ich habs zumindest ein paar monate her geschaft hello world flackernd in verschiedenen farben in QEUM auszugeben
!Aber dafür hast du vermutlich irgendwelche Konsolenfunktionen des Betriebssystems benutzt. Schäm dich. Die Arbeit und den Grips hättest du auch noch investieren müssen

-
volkard schrieb:
It0101 schrieb:
Diese "\n"-Marotte hab ich letztens bei einer Nachhilfeschülerin gesehen...
Sie behauptete, der Kurs an der Uni würde C++ heißen und dann behauptete sie auch noch, der Prof würde die Studenten zwingen "\n" statt std::endl zu nutzen...Dann musste ich ihr leider erklären dass Professoren selten wirklich Ahnung von C oder C++ haben...

Kein Wunder, daß Du lauter schlechte Seiten an C++ findest.
Volkard, ich liebe C++ und ich liebe es sogar Wrapper zu basteln

Nur bin ich kein dogmatischer Programmierer, der sich irgendwelche Regeln vorsetzt. Ich nutze zu jedem Zeitpunkt das, was mir in dem Moment am besten in den Kram passt ( manchmal Usability, manchmal Performance, manchmal Code-Style ).
Und wenn auch C-Code zu einem Zeitpunkt für mich die beste Lösung ist, dann lass ich mir das nicht von irgendwelchen verbohrten Fanatikern schlecht reden.Es ist mir Brille ob std::endl oder "\n" schneller ist und ich wage auch zu bezweifeln, dass der Professor sich diese Frage gestellt hat.
Wer ne performante Bildschirmausgabe benötigt braucht ohnehin einen Kurs in Schnell-Lesen. Oder anders: Textausgabe ist nur ganz selten der Grund für Performancelöcher
-
Shade Of Mine schrieb:
It0101 schrieb:
volkard schrieb:
Das Stringliteral ist C. Und im Wahn, C zu meiden wurde endl statt '\n' verwendet, dabei ist das recht dumm, denn es macht noch heimlich ein flush, das kein Mensch braucht.
Diese "\n"-Marotte hab ich letztens bei einer Nachhilfeschülerin gesehen...
Sie behauptete, der Kurs an der Uni würde C++ heißen und dann behauptete sie auch noch, der Prof würde die Studenten zwingen "\n" statt std::endl zu nutzen...Dann musste ich ihr leider erklären dass Professoren selten wirklich Ahnung von C oder C++ haben...

Der Prof hat aber recht!
Mag durchaus sein, aber es sieht beschissen aus

Gerade bei C++ mit Streams kann man wunderschönen Code schreiben. Das "\n" dadrin ist irgendwie wie ein Haufen Hundekot auf nem Ferrari.
-
It0101 schrieb:
Und wenn auch C-Code zu einem Zeitpunkt für mich die beste Lösung ist, dann lass ich mir das nicht von irgendwelchen verbohrten Fanatikern schlecht reden.
In diesem Thread wurde doch vor allem erwähnt, dass es für viele C-Mittel in C++ sicherere Alternativen gibt. Dass C deswegen fundamental schlecht sei, hast du wahrscheinlich präventiv hineininterpretiert

It0101 schrieb:
Oder anders: Textausgabe ist nur ganz selten der Grund für Performancelöcher

Naja, man kann ja Text nicht nur in die Konsole schreiben.
-
It0101 schrieb:
Es ist mir Brille ob std::endl oder "\n" schneller ist und ich wage auch zu bezweifeln, dass der Professor sich diese Frage gestellt hat.
Wer ne performante Bildschirmausgabe benötigt braucht ohnehin einen Kurs in Schnell-Lesen. Oder anders: Textausgabe ist nur ganz selten der Grund für Performancelöcher
Warum bevorzugst Du endl? Warum soll deine Nachhilfeschülerin endl bevorzugen?
Darüber mußt Du Dir doch Gedanken gemacht haben, als Du den Prof für unfähig erklärt hat. Warum willst Du die Standardausgabe bei jedem Zeilenumbruch flushen?
Oder kannstest Du nur die Bedeutung von endl nicht? Falls dem so war, ok, aber auch dann die Frage, warum endl irgendwie besser als '\n' sein soll.Nur, damit man einem Nube nichts von Escape-Sequenzen erzählen muß. Aber wenn die schon bekannt sind, wie bei der Nachhilfeschülerin, dann entfällt dieser Trick.
-
@Nexus: wir hatten hier schon viele dieser Threads und ich kann mich gut erinnern, dass man für die C Nutzung im C++ vor einiger Zeit ziemlich verteufelt wurde... Du warst das zwar glaube nicht, aber andere.
Ich find leider den Thread nicht mehr... ist auch schon ein Jährchen her.
-
It0101 schrieb:
Das "\n" dadrin ist irgendwie wie ein Haufen Hundekot auf nem Ferrari.
It0101 schrieb:
Nur bin ich kein dogmatischer Programmierer

-
volkard schrieb:
It0101 schrieb:
Es ist mir Brille ob std::endl oder "\n" schneller ist und ich wage auch zu bezweifeln, dass der Professor sich diese Frage gestellt hat.
Wer ne performante Bildschirmausgabe benötigt braucht ohnehin einen Kurs in Schnell-Lesen. Oder anders: Textausgabe ist nur ganz selten der Grund für Performancelöcher
Warum bevorzugst Du endl? Warum soll deine Nachhilfeschülerin endl bevorzugen?
Darüber mußt Du Dir doch Gedanken gemacht haben, als Du den Prof für unfähig erklärt hat. Warum willst Du die Standardausgabe bei jedem Zeilenumbruch flushen?Sie war totale Anfängerin...
Sie hätte das Wort "flushen" nicht mal buchstabieren können.
Geschweige denn hatte sie Interesse daran, irgendwelche Hintergründe zu erfahren. Das war so schon schwer genug, ihr Schleifen, Arrays und Funktionen zu vermitteln. Nachdem sie zweimal die Prüfung verkackt hatte, hat sie mich gebeten ihr wenigstens die Grundlagen beizubiegen damit sie die 4 schafft, und selbst das war harte Arbeit...Ich bevorzuge in Streams std::endl wegen der Code-Optik. Weil das bei mir keinerlei Performancehintergründe hat, kann ich das auch tun.
-
volkard schrieb:
It0101 schrieb:
Das "\n" dadrin ist irgendwie wie ein Haufen Hundekot auf nem Ferrari.
It0101 schrieb:
Nur bin ich kein dogmatischer Programmierer

Ich finde nicht, dass diese beiden Aussagen im Widerspruch zueinander stehen, lieber Volkard

-
const char endline = '\n';:p
-
Schreib doch einfach
cout<<"Beispiel mit\n"; cout<<"zwei Zeilen\n";statt
cout<<"Beispiel mit\nzwei Zeilen\n";Dann brauchste auch kein endl.
Wobei man auch mit endl
cout<<"Beispiel mit"<<endl<<"zwei Zeilen"<<endl;versagen kann, wenn man sich darum bemüht.
-
Aber dann gefällt mir der Code nicht mehr...

-
Wieso nicht
cout<<"Beispiel mit\n" "zwei Zeilen\n";oder
cout<<"Beispiel mit" /* weit weg um den Lesefluss nicht zu stören */ "\n" "zwei Zeilen" "\n";
-
camper schrieb:
Wieso nicht
cout<<"Beispiel mit\n" "zwei Zeilen\n";printf( "Beispiel mit\nzwei Zeilen\n" );
-
It0101 schrieb:
Sie war totale Anfängerin...
Sie hätte das Wort "flushen" nicht mal buchstabieren können.Und deshalb einfach falsch nicht erklären? Besser einfach richtig nicht erklären.
Wenn du endl nicht erklärst, dann verwende es einfach nicht. \n ist genauso erklärbar wie endl -> so macht man es halt. Da muss man nichts von escape sequenzen und so erklären. Genauso wie man #include nicht erklären muss um es verwenden zu können.
Die Leute merken sich das dann, und schreiben immer endl - weil sie das schon immer so gemacht haben. Das ist furchtbar. Man kann Anfänger doch nicht einfach so früh schon so falsche Sachen lehren. Es ist ja nicht so als ob du dadurch mehr Verständnis für die Sprache gewinnen würdest - ob der Anfänger \n oder <<endl schreibt ist für ihn komplett egal. Komisch sieht beides aus.
Ich bevorzuge in Streams std::endl wegen der Code-Optik. Weil das bei mir keinerlei Performancehintergründe hat, kann ich das auch tun.
Ich hoffe ich muss nie eine Anwendung verwenden an der du mitgeschrieben hast. Solche Aussagen tun weh.
-
It0101 schrieb:
camper schrieb:
Wieso nicht
cout<<"Beispiel mit\n" "zwei Zeilen\n";printf( "Beispiel mit\nzwei Zeilen\n" );int mprintf(char** lines) { int count=0; for (int l=0; lines[l]; l++) { for (int i=0; lines[l][i]; i++) { putchar(lines[l][i]); count++; } putchar('\n'); count++; } return count; } mprintf((char**){ "Hello string", mystr.c_str(), myobj.toString(), "I came to terminate you", 0 });?
-
Shade Of Mine schrieb:
Ich hoffe ich muss nie eine Anwendung verwenden an der du mitgeschrieben hast. Solche Aussagen tun weh.
Warum? Ich finde die Optik von Code nicht ganz unwichtig. Das optische Erscheinungsbild von Code kann die Lesbarkeit durchaus positiv beeinflussen.
Und gerade bei C++ kann Code schön aussehen.@Shade: Invers mutmaße ich mal, dass dir die Optik von Code egal ist?
Also quasi sieht dein Code so aus ( denn Optik ist ja egal ):
void test(int myint,double &mydouble){if(myint==2&&mydouble>-1)mydouble=17;else mydouble=16;}