WARNUNG: Bücher von Jürgen Wolf zu C und C++ zum Lernen ungeeignet weil...
-
Hier ist mal ein Beispiel von gestern oder vorgestern und davon gibt es viel viel mehr:
RisH schrieb:
Hi,
ich sitze gerade an dem OpenBook von Galileocomputing "C von A bis Z" und habe zwei Fragen zu folgendem Beispiel:
/* ptr13.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 255 char *eingabe(char *str) { char input[MAX]; printf("Bitte \"%s\" eingeben: ",str); fgets(input, MAX, stdin); return strtok(input, "\n"); } int main(void) { char *ptr; ptr = eingabe("Vorname"); printf("Hallo %s\n", ptr); ptr = eingabe("Nachname"); printf("%s, interssanter Nachname\n", ptr); return EXIT_SUCCESS; }
1. Wieso ist die Funktion "*eingabe" ein Zeiger und welchen Sinn macht das?
2. Ein Kapitel zuvor wurde in dem Buch erwähnt, dass ein Zeiger !NUR! eine Adresse, einer Variable, als Wert haben kann/darf. Nur wieso darf er hier plötzlich einen String als Wert haben?Ich freue mich über jeden Versuch mir die Antworten, auf meine Fragen, näher zu bringen und bedanke mich jetz schon Mal ganz lieb im Voraus.
LG
RisHEDIT:
Tut mir echt Leid, doch habe erst jetzt gesehen, dass ich ausversehen im C++ Unterforum gelandet bin. Könnte ein Mod den Beitrag bitte verschieben?
Aber die Syntax ist ja eigentlich die gleiche.seldon schrieb:
RisH schrieb:
char *eingabe(char *str) { char input[MAX]; printf("Bitte \"%s\" eingeben: ",str); fgets(input, MAX, stdin); return strtok(input, "\n"); }
Wenn das so wirklich da drin steht, würde ich mir an deiner Stelle schleunigst ein besseres Buch besorgen - der Code, so wie er da steht, erzeugt undefiniertes Verhalten (die Funktion gibt verdeckt einen Zeiger auf eine lokale Variable zurück). Wenn das bei dir funktioniert, ist das reiner Zufall, und wenn der Autor das so geschrieben hat, hat er von C nicht genug Ahnung, um ein Buch darüber zu schreiben - das ist ein böser Anfängerfehler.
seldon schrieb:
Das ändert aber auch nichts daran, dass er danach nicht einfach input aus der Funktion zurückgeben kann - input wird ungültig, sobald die Funktion verlassen wird.
Was Jürgen Wolf und Galileo Press angeht - naja, ein renommierter Fachverlag wird Galileo Press mit solchen Autoren jedenfalls nicht. Vielleicht hat man sich auf das Markt+Technik-Konzept eingeschossen, Bücher von Deppen an Deppen zu verkaufen. Geld ist auf die Weise ja zu machen.
-
Wenn man sich auf seiner Seite www.pronix.de anschaut wie er zu den unterschiedlichsten Themen Bücher innerhalb kürzester Zeit rausbringt dann hat man doch schon die Erklärung warum die meisten Werke nicht gerade mit tiefen Wissen getränkt sind.
So etwas wie C oder C++ Fachbuch zu schreiben verlangt lange Erfahrung und wird nicht mal eben in einem Jahr fertig gemacht. Das ist als wenn du dir den Führerschein von jemanden beibringen lässt der gerade mal ein Jahr Fahrpraxis hat. Mir tuhen die Leute leid die sich von dem lockeren Schreibstil blenden lassen und wirklich daraus viele falsche Grundlagen lernen.
Sorry Jürgen aber das ist meine Meinung und die darf auch mal in einem C++ Forum öffentlich gemacht werden.
-
Beispiele schrieb:
Hier ist mal ein Beispiel von gestern oder vorgestern und davon gibt es viel viel mehr:
RisH schrieb:
char *eingabe(char *str) { char input[MAX]; printf("Bitte \"%s\" eingeben: ",str); fgets(input, MAX, stdin); return strtok(input, "\n"); }
Ich hab das mal nachgeschlagen, und interessanterweise ist der Autor sich ja sogar bewusst, dass man keine Adressen lokaler Variablen zurückgeben darf. Er scheint aber zu glauben, dass das strtok auf magische Weise einen Zeiger zurückliefert, den man weiter zurückgeben kann. Unverständlich.
-
Ich hatte mir C++ von A bis Z begleitend für die Ausbildung gekauft. Habe aber schnell aufgehört zu lesen, da ich nach kurzer Zeit zuviel des Codes hinterfragt habe. (Was macht der da? Wieso jetzt so? Das hätte ich aber anders gemacht .. etc.)
Darauf hin wollte ich mir den Primer kaufen bin aber doch beim Buch "Der C++ Programmierer" gelandet und finde es sehr gut.
Alles in allem muss ich aber auch Sagen, dass ich Bücher meist nur Überfliege und mir hin und wieder mal etwas rauspicke.
Wenn ich etwas lerne, dann möchte ich auch das es gut ist. Deswegen bin ich ja hier angemeldet :). Lese immer wieder interessante und nützliche Dinge und habe einiges hier lernen dürfen.
Danke an dieser Stelle ;)!
PS: Als verteidigung möchte ich aber hinzufügen, dass Code-Beispiele für VB aus dem Netz wohl 100000 mal schlimmer sind als dieses Buch :D:D:D.
Selbst die meisten MSDN-Einträge funktionieren nie auf anhieb
-
Und trotzdem geht es nicht um konkrete Einzelpunkte. Man kann das Buch nicht retten, indem man die paar eindeutig falschen Codebeispiele repariert.
Daß die User
1. Wieso ist die Funktion "*eingabe" ein Zeiger und welchen Sinn macht das?
2. Ein Kapitel zuvor wurde in dem Buch erwähnt, dass ein Zeiger !NUR! eine Adresse, einer Variable, als Wert haben kann/darf. Nur wieso darf er hier plötzlich einen String als Wert haben?fragen, ist doch fatal.
Was er braucht, ist ein Ghost-Writer. Wird er aber nicht machen. Er wird so schlau sein, und regelmäßig die Foren nach Fehlern fragen. Oh, hat er ja schon. Ich mag aber hier nicht seine Arbeit machen. Dazu sehe ich zu wenig Eigenleistung. Soll er sich doch einen Informatik-Studenten für ein paar Kröten mieten.
-
ja, das beispiel ist schon recht buggy.
aber dass anfaenger verstaendnisprobleme mit dem gelesenen aus buechern haben ist mir nichts neues. wenn es danach ginge wuerde ich jedes buch verbannen das meint es lehrt "spieleprogrammieren" (am besten noch sammt c++ und mathe grundlagen) von A bis MMORPG (und das waeren sicher die allermeisten buecher).
Das Cuda buch was jetzt ankam hat auch weniger inhalt als das online PDF und sieht aus als ob jemand (was man aufgrund der gleichen farbgebung und schriftzeichen sieht) es als grundlage genommen haette, es zusammenstrich um weniger seiten, sprich druckkosten, zu haben und dann publishte.
es gibt so dermassen viel schund.
ich wuerde da eher einen anderen weg gehen und statt irgendwas schlecht zu machen, ganz explizit die perlen rauspicken fuer die einzelnen bereiche und den leuten empfehlen. Es passiert ja nicht selten dass leute hierher kommen um buecher empfohlen zu bekommen, da hilft es nicht wenn wir irgendwo jedes buch was auf deutsch ist in unserer buchecke als review mit link zum amazon partnerprogram reinstellen und dazu noch banner ueber den foren blinken mit werbung fuer eben sowas.
Da wuerde ich lieber ueber jedem forum die sammlung von buechern sehen die die moderatoren dieser foren aufgrund eigener erfahrung empfehlen. das wuerde sicherlich auch weit mehr geldflus im partnerprogram bieten.
-
wir hatten vor einigen Jahren bereits auf viele Fehler auf seinen eigenen Forum hingewiesen. Wir wurden von den Moderatoren eher belächelt und nicht ernst genommen, immer nach dem Schema "jaja, in der Printausgabe ist es aber richtig".
Wenn ich mich recht erinnere, wurde die Seite sogar für ne Zeit lang ausgeschaltet, um sie zu bearbeiten und die Online-Ausgabe zu verbessern. Verbessert hat sich zumindest leider nicht.
Zum gezeigten BSP. Er sagt im nächsten Abschinitt, man solle keine lokale Arrays zurückgeben, blablabla. Auch wenn es stimmen sollte, dass strtok ein dynamisc allokierten? static char[] ?? - Zeiger zurückliefert und deshalb geht, finde ich es unverantwortlich so etwas überhaupt als funktionierendes Beispiel anzugeben. Ungefähr so, als wenn im Buch "Heimwerker für dummies" stünde: "Kaufen sich doch keinen Hammer, einen großen Schraubenzieher tut es auch, und wenn doch nicht, nehmen Sie doch einen Stein.".
-
Na diesen Thread hier kann er nicht ignorieren oder löschen. Schön dass hier endlich mal ein paar Leute Eier zeigen und sagen was viele schon lange denken.
Vielleicht können wir wenn genug Postings zusammenkommen das mal den Verlag zukommen lassen?
Mir wird auch ganz schlecht wenn ich sehe dass er bald noch zwei Grundlagenbücher rausbringt, vielleicht wird dort ja alles anders aber irgendwie glaube ich nicht das er inzwischen C oder C++ wirklich richtig gelernt hat.
-
Ich finde Bücher, die am Alltag, an Programmierpraxis und der Realität vorbeigeschrieben sind sowieso blöd. Grafik erst nach 1000 Seiten? Ein schlechter Witz! Oder liegt das eher an der Sprache, das man soviel theoretischen Kram vorschreiben muß? For (c=c;(c?=262144?);c++) print Buch;...
Dann ist das eindeutig eine Fehlentwicklung. Wie ist die zu erklären?
Wie ist zu erklären, das die besten (Computer und Programmier-)Bücher schnell vergriffen sind, und nicht als Neuauflage rauskommen?
rip:
Programmieren lernen für Teens
von Bernd BrügmannAssembler Referenz
von Oliver MüllerAdvanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers
von Ray DuncanPC intern
von Michael TischerAdvanced Windows
von Jeffrey M. RichterTricks of the 3D Game Programming Gurus. Advanced 3D Graphics and Rasterization
von Andre LaMotheusw.
Gibt es zum Glück noch:
Programmieren in C
von Brian W. Kernighan und Dennis M. RitchiePractical C Programming
von Steve OuallineAssembler: Maschinennahes Programmieren von Anfang an. Mit Windows-Programmierung
von Reiner BackerAssembler: Grundlagen der Programmierung
von Joachim Rohde Marcus RomingVermisst:
Linux Grafik/Spieleprogrammierung/Qt
..und wenn dann der Wolf der einzige ist, der dazu ein aktuelles Buch schreibt
( http://www.amazon.de/Qt-4-6-GUI-Entwicklung-umfassende-Handbuch/dp/383621542X/ )(welches sich wahrscheinlich schlecht verkauft, wenn man die vergriffenen Bücher zu diesem Thema sieht...)...so kann man eigentlich nur zu dem Schluss kommen, ein gemeinsames Buch zu entwickeln (und notfalls mit Eigenfinanzierung), welches genauer ist, didaktisch supergut, spannend, anschaulich und alltagsnah und praxisnah und praktisch und praktisch und praktisch ist...;)
-
dazu muss man kein buch entwickeln, da reichen gute tutorials und falls jemand wirklich papier braucht, kann er sich das ausdrucken. das ist in jeder hinsicht oekonomischer.
-
raps schrieb:
dazu muss man kein buch entwickeln, da reichen gute tutorials und falls jemand wirklich papier braucht, kann er sich das ausdrucken. das ist in jeder hinsicht oekonomischer.
Du kennst ein gutes Tutorial zum Thema Spieleentwicklung unter Linux mit vielen Hintergrundinfos? Also sowas ähnliches wie ein gutes DirektX/Spieleprogramming für Windows Buch - nur eben für die tolle Entwicklungsplattform Unix/Linux geschrieben ?
-
nachtfeuer schrieb:
raps schrieb:
dazu muss man kein buch entwickeln, da reichen gute tutorials und falls jemand wirklich papier braucht, kann er sich das ausdrucken. das ist in jeder hinsicht oekonomischer.
Du kennst ein gutes Tutorial zum Thema Spieleentwicklung unter Linux mit vielen Hintergrundinfos? Also sowas ähnliches wie ein gutes DirektX/Spieleprogramming für Windows Buch - nur eben für die tolle Entwicklungsplattform Unix/Linux geschrieben ?
http://nehe.gamedev.net/
http://www.opengl.org/code/Sowas z.B.? Findet man so per Google glaub ich
-
Gasty schrieb:
So etwas wie C oder C++ Fachbuch zu schreiben verlangt lange Erfahrung und wird nicht mal eben in einem Jahr fertig gemacht. Das ist als wenn du dir den Führerschein von jemanden beibringen lässt der gerade mal ein Jahr Fahrpraxis hat. Mir tuhen die Leute leid die sich von dem lockeren Schreibstil blenden lassen und wirklich daraus viele falsche Grundlagen lernen.
In der Praxis hast Du 4 Wochen Zeit - dann muß das Teil druckreif formatiert
vorliegen (ich habe bei Vieweg einige dBASE-Schwarten gemacht). Große Zeit zum
Recherchieren und Korrigieren bleibt da nicht, es sei denn, man nimmt's Ernst
und macht Nachtschichten.Es schreibt einer vom Anderen ab, Fehler ziehen sich durch Generationen von
Fachbüchern.Man kann ja prima Geschäfte mit wenig Arbeit machen oder die Sache Ernst nehmen.
Klar muß so ein Beschiß an die Öffentlichkeit.
-
4 Wochen Zeit für ein C++ Walzer? Da schaffe ich ja nicht mal das Buch durchzuarbeiten
C++ ist nun mal die Königsdisziplin im Programmieren, da darf es ruhig etwas komplexer sein. Ich halte auch nicht viel von den Büchern wo C++ und noch ein anderer Kram erklärt wird, weil hier meist ein Thema auf der Strecke bleibt.
Zum reinschnuppern mag das ja auch ok sein, aber es sollte immer darauf hingewiesen werden dass in solchen Büchern nur ein Bruchteil C++ gesprochen wird und dass dieses Wissen nicht langt um andere Programme richtig von der Syntax zu verstehen.
Zurück zum Thema, wenn man nur 4 Wochen Zeit um ein Buch zu schreiben dann sollte man wenigsten vorher schon ein Script fertig haben das fast dem Buch entspricht und natürlich viel von der Materie verstehen. Die knappe Zeit kann keine Endschuldigung dafür sein dass dadruch ganz viele neue Programmierer einfach was falsches lernen und das nächste AKW in die Luft fliegt
Es gibt doch auch positive Beispiele wie "Der C++ Programmierer"(was fast identisch ist mit "C++ Einführung und professionelle Programmierung"), "C++ Primer" und "Die C++ Programmiersprache".
Wenn man angeblich schon viel abschreiben muss warum nicht von solchen Werken Die Themen dann luftig locker zu beschreiben kann man ja immer noch, obwohl es dann wohl auch mal zwei dicke Walzer werden könnten
-
Hi cppfrager,
vergiß nicht: Es ist ein Geschäft. Knallhart. Termine. Rendite.
Keiner macht das aus Idealismus.
-
Ja, das ist mir schon klar das wenn man so etwas beruflich macht der Spaß auf der Strecke bleibt. Aber dass die Termine sooo krass sind wusste ich nicht, aber ich habe auch keine Ahnung von Verlagen etc.. Meine Scripts, die ich schreibe um mein Wissen zu festigen, werden niemals das Licht der Öffentlichkeit zu sehen bekommen
-
Übelste Beispiele für so einen Pfusch waren früher die Bücher von Data
Becker (mit Schaltungen wo zB die Versorgungsspannung verpolt eingezeichnet
war, falsche Chips etc). Markt & Technik ist keinen Deut besser.Es wäre mal interessant, sachliche Fehler über die Jahre zurückzuverfolgen.
Vermutlich wird das auch so eine Art "binärer Baum der Raubkopie"
-
nocheiner schrieb:
Na diesen Thread hier kann er nicht ignorieren
Doch, das ist ganz leicht.
nocheiner schrieb:
oder löschen.
Hängt davon ab, ob Marc++us Eier hat, wenn der Brief vom Anwalt kommt.
-
volkard schrieb:
nocheiner schrieb:
oder löschen.
Hängt davon ab, ob Marc++us Eier hat, wenn der Brief vom Anwalt kommt.
was soll da drin stehen? ... sind wir hier in china oder was.
-
Scheppertreiber schrieb:
In der Praxis hast Du 4 Wochen Zeit - dann muß das Teil druckreif formatiert
vorliegen (ich habe bei Vieweg einige dBASE-Schwarten gemacht). Große Zeit zum
Recherchieren und Korrigieren bleibt da nicht, es sei denn, man nimmt's Ernst
und macht Nachtschichten.in meiner kleinen welt dachte ich immer, man MUSS ein buch schreiben, weil man eine "neue didaktische" idee hat (wenn schon c++ anfängerbuch), oder einen wunsch hegt, endlich etwas zu formulieren, das einfach noch fehlt auf dem markt (spezialitäten).
in meiner kleinen welt sah ich tatsächlich idealisten, die vorher schon ausführliche skripte in der schreibtischschublade hatten, und bis auf ein paar schreibfehler gut vorbereitet waren auf eine verlagsanfrage.irgendwie unvorstellbar, dass anscheinend wirklich jemand, der null ahnung von didaktik hat, ein anfänger- , oder wenig erfahrung in programmierung, ein programmierspezialitätenbuch schreibt?
zum glück gibt es in meinem umfeld doch noch ein paar wenige dieser idealisten...