Einführung in die Programmierung mit c++ (Bjarne Stroustrup) nicht aktuell ?
-
Hallo Ich bin dabei C++ zu erlernen. Ich hab bisher ein tuorial und ein leicht verständliches Anfängerbuch von Dirk Louis durchgearbeitet. Nun hab ich mir das Buch "Einführung in die Programmierung mit C++" von Bjarne Strousstrup gekauft der ja als Erfinder von C++ gilt. Jedoch schon nach kurzer Zeit drängen sich mir einige Fragen auf. Ich werde im Beispiel das "Hallo-Welt" Programm zittieren um es einfach zu halten.
Den Code den ich bisher gelernt habe und auch schon in vielen andere Tutos, Bücher ect. gelesen habe ist folgender:
#include <iostream> using namespace std; int main() { cout << "Hallo Welt" << endl; return 0; }So habe ich gelesen soll man diesn Code schreiben.
Im Buch von Bjarne hingegen steht folgendes:#include "std_lib_facilities.h" int main() { cout << "Hallo Welt\n"; return 0; }In Allen bisherigen Bücher tuto ect. habe ich gelernt das es "falsch" bzw "veraltet" sei den Code für das Hallo Welt Programm so zu schreiben. Man soll die #include <iostream> direktive sowie namespace std; benutzen. Auch soll man <<endl und nicht \n nutzen für eine neue Zeile . (Obwohl erwähnt wurde das \n auch ok sei aber halt noch aus den alten c Zeiten stamme)
Meine Frage nun: Wie soll ich weitermachen ? soll ich das Buch weglegen und mir "aktuellere" Unterlagen zulegen (wobei diese Buch ja im März 2010 erschienen ist und auf dem neusten Stand der Dinge sein sollte) oder soll ich das bisher gelernte vergessen und dem Rat von Bjarne folgen ? (der erfinder von C++ kann ja nicht falsch liegen oder ?
)Ich persönlich bin ja der Ansicht das man am besten alles so aktuell wie möglich lernen sollte, allerdings bin ich auch ein absoluter Noob und wäre Euch daher für eine Stellungsnahme bzw. Tipp sehr dankbar.
Besten Dank im voraus
Gruss Dadeldi
-
Da fehlt ein ". Abgesehen davon ist std::endl; == '\n' + flush(); Was der include soll weiß ich nicht, würde aber aus der Benutzung von cout ohne std:: mal schließen das das ein eigenes Include ist das einiges vereinfachen soll...
-
> Im Buch von Bjarne hingegen steht folgendes:
Was da steht ist besser: Er verdeckt Sachen wie Namespaces und endl erst mal, da es nicht dazu beiträgt, das Programm zu verstehen. Veraltet ist da garnichts.

-
Es ist Quatsch zu behaupten, "\n" wäre veralteter Käse aus C-Zeiten. std::endl schreibt auch nur ein "\n" in den Stream - darüberhinaus wird der stream ge-std::flush()'d! Und wenn dein Programm lange ist, kann das ständige (unnötige) flushen eine Performancekrücke sein (Puffer leeren, Flags zurücksetzen, usw).
Ich bin mir sicher, dass wenn man das Buch genau liest, irgendwo übder den Hinweis stolpert, was das "std_lib_facilities.h" ist. Da wird 100% oft benötigtes Zeug includiert, vllt. ein paar Macros definiert, und das "using namespace std;" gemacht. Das dient garantiert nur dazu, den Quelltext im Buch kurz zu halten. Stell dir vor, jedes Beispiel bindet string, iostream, ... ein - was da an Platz draufgeht, da kommen garantiert irgendwelche Umweltaktivisten, die den unnötigen Tod zahlreicher Bäume rächen wollen!Also: Der Struppi ist nicht alt und macht auch keinen Schwachsinn!
-
Vielen Dank für Eure Hilfe, Ihr habt mir meine Zweifel als Unwissender genommen
Es ist für einen Neuling wie mich schwer einzuschätzen was, wie, wenn, wo und wesshalb. Zudem möchte ja jeder seine Bücher verkaufen und es gibt ja immer verschiedene Wege bis zu Ziel. Ich werde das Buch durcharbeiten und danach mal schauen wo ich stehe.Danke nochmals und weiterhin allen viel spass.
Gruss Dadeldi
@padreigh Danke für den Hinweis........Ich hab den Fehler gleich behoben

-
l'abra d'or schrieb:
Also: Der Struppi ist nicht alt und macht auch keinen Schwachsinn!
Ersterem würde ich widersprechen. Letzterem nicht.

-
-
Also ich hab die 4. überarbeitete Auflage, und da steht so was nicht drin...
Apropo, Mr. Stroustrup hat mehrere Auflagen von "The C++ programming language" geschrieben... Wennst sagst wie kalt's war sag ich dir warum schnee fiel, oder warum nicht...
Das ist nicht wirklich schlau gefragt, wer eine gute Antwort will sollte gut Fragen... z.b. in der 2. Auflage von 1996 "Die Programmierspache C++" von B. S. steht, dann kann ich dir sagen was sich in der zwischenzeit geändert hat, oder warum es damals so war, aber so...kann ich nur sagen ???
-
thepower schrieb:
Apropo, Mr. Stroustrup hat mehrere Auflagen von "The C++ programming language" geschrieben...
Er hat sogar noch andere Bücher geschrieben, z.B. "Einführung in die Programmierung mit C++", um das es hier geht.
-
Wie jetzt?
Als allererstes lernt ein Anfänger bei Stroustrup also, dass es eine besonders gute Idee ist,
'using namespace std' in eine Headerdatei auszulagern?
Das sollte sich der gute Herr Wolf mal erlauben - dann wäre hier die Hölle los
-
Jockelx schrieb:
Wie jetzt?
Als allererstes lernt ein Anfänger bei Stroustrup also, dass es eine besonders gute Idee ist,
'using namespace std' in eine Headerdatei auszulagern?
Das sollte sich der gute Herr Wolf mal erlauben - dann wäre hier die Hölle los
Vielleicht steht da ja auch nur
using std::endl
-
Hast du das Buch? Aus dem Beispiel kann man nicht ableiten, dass dieser Header den std-Namensraum aufmacht, da könnte auch nur
using std::cout; using std::endl;drin stehen. Ich sehe nicht das Problem, aus didaktischen Erwägungen am Anfang eine Menge irrelevante Komplexität zu verschweigen.edit: Zu langsam.

-
Bashar schrieb:
Hast du das Buch?
Nee.
Bashar schrieb:
Aus dem Beispiel kann man nicht ableiten, dass dieser Header den std-Namensraum aufmacht
Stimmt. Da hab ich ihm vielleicht unrecht getan.
Bashar schrieb:
aus didaktischen Erwägungen am Anfang eine Menge irrelevante Komplexität zu verschweigen.
Falls er den Namensraum aufmacht, geht er mit schlechtem Beispiel voran und das wäre dann auch didaktisch schlecht.
-
Jockelx schrieb:
Das sollte sich der gute Herr Wolf mal erlauben - dann wäre hier die Hölle los

Wer ist Herr Wolf? Dein Vorgesetzter oder muss man den kennen?
-
Nein, das ist mein Papa.
-
http://www.stroustrup.com/Programming/std_lib_facilities.h
So sieht die Datei aus.
-
// disgusting macro hack to get a range checked string:
// disgusting macro hack to get a range checked vector:
#define vector VectorSieht ja nicht grad so aus als wäre er selbst stolz auf diesen header. :>
-
thepower schrieb:
Also ich hab die 4. überarbeitete Auflage, und da steht so was nicht drin...
...hat auch keiner behauptet. Du verwechelst da die Bücher. Hier geht es nicht um TC++PL sondern um Programming.