C von A bis Z: Das umfassende Handbuch: Das umfassende Handbuch für Linux, Unix und Windows (Galileo Computing)
|
| Preis: | EUR 39,90 Kostenlose Lieferung Details |
Verfügbarkeit: Gewöhnlich versandfertig in 24 Stunden
Versand und Verkauf durch Amazon.de
75 neu oder gebraucht verfügbar EUR 33,92
Durchschnittliche Kundenbewertung:(15 Kundenrezensionen)
Produktinformation
- Amazon-Verkaufsrang: #34607 in Bücher
- Modell: 978-3-8362-1411-7
- Veröffentlicht am: 2009-09-28
- Abmessungen: 9.84" h x 2.48" b x 7.24" l, 4.23 Pfund
- Einband: Gebundene Ausgabe
- 1190 Seiten
Kundenrezensionen
Hilfreichste Kundenrezensionen
15 von 17 Kunden fanden die folgende Rezension hilfreich.
Sehr viele Fehler, lückenhaft, widersprüchlich; unbrauchbar
Von Max
Der Autor wendet sich an Einsteiger und Profis, mit seinem 'ausführlichen, umfangreichen und kompetenten' Werk zum Thema ANSI C und C99.
Einzig kompetent und umfangreich an diesem Buch ist der Einblick, den der Autor in seine Unkenntnis und Inkompetenz zu C gibt.
Das Buch ist niemandem zu empfehlen.
Die beiliegende Referenzkarte ist fehlerhaft (isascii) ebenso die operator precedence im Anhang, richtig abschreiben kann der Autor auch nicht.
Das Buch ist didaktisch fehlerhaft aufgebaut, es wird etwas genannt ohne Erklärung oder Verweis auf später. (char-Datentyp,Kommentare)
Wichtige Fachbegriffe 'vergisst' der Autor zu nennen und zu erklären: sequence point, promotion (nur unvollständig), lvalue, statements, expressions, hosted/freestanding env.
undefined behaviour (UB) wird nur in Deutsch verwendet, der gängige englische Fachbegriff bliebt unerwähnt, ebenso 'vergisst' der Autor C99 Features wie VLA, compound literal, UCN, _Pragma.
Der Autor sagt zwar, dass er bei C99 jeweils darauf hinweist, tut es aber nicht immer sodass man jeweils C99 oder ANSI selbst herausfinden muss.
Die Anhangreferenz zur Standardbibliothek ist unübersichtlich gestaltet pro Headerdatei (unsortiert), bei stdio.h fehlt z.B. die ganze C99 Familie von s(n)printf.
Im ganzen Buch reihen sich falsche Aussagen des Autors dicht an dicht:
fgets hängt immer '\n' an
Argumentauswertung bei Funktionen läuft immer von rechts nach links
bei unsigned Überlauf werden Bits immer abgeschnitten
Zeiger sind gleich groß
Zeiger sind bei 32-Bit immer 4 Byte
ints sind bei 32-Bit immer 4 Byte
float/double/long double immer 4/8/10 Byte
Dass ANSI lediglich (implizit) Mindestgrößen und bei Zeigern nur Vergleichsgrößen vorgibt und 32-Bit usw. überhaupt nicht definiert, ist dem Autor wohl unbekannt.
'void main ist nach einem älteren Standard gültig'; auch hier offenbart der Autor seine Unkenntnis; vor ANSI-C gab es keinen Standard, er verwechselt hier das bis ANSI-C gültige implicit int returntype mit void; die einzig konforme Verwendung von 'void main' in freestanding environments 'vergisst' der Autor wiederum.
Da fallen andere kleinere 'Verschreiber' wie fscanf_f statt fscanf_s, uclock_t statt clock_t, Bit statt Byte, KByte statt Byte, 0xFF==256, Word>>0, falsche printf/scanf-Formatstrings in nahezu jeder undefinierten Kombination, ebenso wie Rechtschreibfehler in dieser '3. stark verbesserten und erweiterten Auflage' nicht weiter auf.
Sinnfreie 'Empfehlungen' gibt der Autor auch wie:
Strukturkopien sind zwar Standard sollten aber nicht verwendet werden, 'da der Compiler hier Fehler machen könnte'.
keine Gleichheitsprüfungen bei Schleifen
Verwendung von großen globalen Arrays
er empfiehlt doch tatsächlich Einsteigern, doch selbst mal in Standardheadern sich Prototypen anzuschauen
scanf hat bei Strings keine Überlaufsprüfung
wchar_t ist 2 Byte groß 'zunehmend aber auch 4 Byte'.
Was soll der Leser mit solchen Aussagen anfangen, zumal die Listings zuvor genau von erster Aussage ausgehen und somit UB hervorrufen, wenn der Leser mal andere als die Autorumgebungen verwendet.
Diese Eigenart des Autors, erst eine Pauschalaussage zu machen, dafür Code zu schreiben und dann kurz nachher die Aussage einzuschränken
(gilt nur für 32 Bit,nur für GCC,nur für Windows,nur für Linux,..) findet man häufig.
Dass dadurch alle seine Aussagen+Code zuvor nicht mehr portabel sind, interessiert den Autor nicht,
obwohl er für C die Portabilität als wichtiges Merkmal nennt.
Wer beim Thema dynamische Arrays an VLA denkt, liegt beim Autor falsch:
'Wenn mit ... malloc ein ... Speicherbereich reserviert werden kann, dann muss es auch möglich sein, Speicher für ein Array während der Laufzeit zu reservieren'.
Anschließend 'erklärt' er, dass 'value=malloc(size*sizeof(int))' einmal ein Zeiger und dann ein (dyn.) Array sei, bloß weil er einmal mit *(value+i) und dann mit value[i] darauf zugreift.
Der Autor hat nichts verstanden, zumal er selbst zuvor sagt, dass ein Zeiger eben kein Array ist und man nicht von der Ähnlichkeit der Zugriffe auf diese Gleichheit schließen darf.
Durchgängig verwendet der Autor Deklaration für Definition, was auch falsch ist wie das Löschen des Eingabepuffers mit fflush(stdin), naiven Konstrukten wie scanf("%c%*c"), einfach getchar oder gar
'do { scanf(...); } while(getchar()!='\n')'. (mit sinnfreier do Schleife)
Der Autor verwendet zwar ein ganzes Kapitel auf die Eingabepufferlöschung und nennt dabei auch die fflush Begrenzung auf Ausgabestreams, hält sich aber im ganzen Buch nicht daran, seine Erklärungsversuche:
"Es scheint aber nicht ganz klar,ob dies auch für Linux gültig ist. Auf Linux-Systemen will fflush partout nicht funktionieren."
Dem ist wohl nichts hinzuzufügen.
Mit Array und Pointer steht der Autor wie gesagt auf Kriegsfuß, im Kapitel "Zeiger als Rückgabewert" weist er auf die Gefährlichkeit der Rückgabe von lokalem Speicher hin und zeigt dann aber:
char *test4(char *ptr){
char buffer[10];
ptr = buffer;
strcpy(buffer, "testwert");
return ptr;
}
Autoren, die solchen Code produzieren, haben nichts verstanden, zumal bei dem Kapitelnamen(!).
Listings mit Fehlern bei Arraygrenzen 'for(i=0;i<=size;i++)' oder array[-1] sind keine Seltenheit.
Weiterhin behauptet der Autor,dass eine Zeigerübergabe an Funktionen call by reference sei.
Der Autor hat auch diesen Fachbegriff nicht verstanden.
Code wie
fwrite((char*)'\0',1,size,fp)
fread(&array,...)
printf("%p",*charpointer)
char buf1[100]='\0'
oder while(*++argv) ohne argc-Auswertung lassen Zweifel an der Ernsthaftigkeit des Autors aufkommen:
"Alle Listings in diesem Buch wurden auf mehreren gängigen Systemen und Compilern getestet. ...nicht ausgeschlossen... in Einzelfällen...Fehlermeldungen...".
Zumindest für Erstgenanntes ist das unmöglich.
Bei CGI verwendet der Autor durchgängig printf("...\n") statt puts("...") obwohl er zuvor genau vor diesen Exploits warnt.
Bei Kapitel 'Sicheres Programmieren' verweist der Autor u.a. auf strncpy statt strcpy ohne die dadurch entstehenden neuen Unsicherheiten zu nennen (er selbst begeht diese Fehler in seinem Buch häufig) und 'vergisst' wieder mal bei seiner Empfehlung von snprintf darauf hinzuweisen, dass diese Funktion nur in der C99 Bibliothek vorkommt.
Im Plagiatszeitalter möchte auch der Autor nicht zurückstehen und nennt bis auf wenige verstreute Nichtautorlinks keine Quellenangaben. Er begründet das mit "... da sich Webseiten und Adressen recht häufig ändern,...". Andere Quellen als Webseiten und Adressen kennt der Autor offenbar nicht.
Einen hab ich noch: "JavaScript ist eine Untermenge von Java".
Das Buch ist aufgrund der vielen Fehler und offenkundigen Unkenntnis des Autors über den C Standard niemandem zu empfehlen und ein Tiefpunkt der Fachbuchwelt, wobei der Autor weitere Auflagen androht.
7 von 8 Kunden fanden die folgende Rezension hilfreich.
Der Allrounder
Von F. Tobias
Also ich habe mir zwar die letzte Version des Buches gekauft, allerdings habe ich auch das Openbook zu "C von A bis Z", aber egal :)
Also ich finde das Buch ist gut und übersichtlich gestaltet, gut verständlich (selbst für Anfänger) und ein sehr gutes Nachschlagewerk für Fortgeschrittene. Ich habe es mir selbst als blutiger Anfänger gekauft und muss sagen bis auf einige wenige ""Fachbegriffe"" ist es wirklich absolut leicht verständlich rübergebracht!
In diesem Sinne, wer reinlesen will oder sichs auf dem Computer durchlesen will kann sich das Openbook runterladen, wer allerdings (wie ich) mehr auf die Gebundene Version steht, kauft es sich eben! :)
6 von 7 Kunden fanden die folgende Rezension hilfreich.
Umfassendes Nachschlagewerk
Von mumbai
Dieses Buch erstaunt nicht nur durch die schiere Größe. Es ist sowohl als Einstiegswerk in C geeignet, als auch als Nachschlagewerk. Praktisch ist die herausnehmbare Befehls-Referenz, mit dem Wichtigsten in Kürze. Ideal für den Schreibtisch.
Dieses Monster durchzuarbeiten braucht seine Zeit, aber es lohnt sich, auch weiterführende Literatur zu C sollte mit diesem Wissen kein Thema mehr sein. Eine solide Basis ist auf jeden Fall vorhanden und jederzeit kann es zum Nachschlagen verwendet werden.
Sicher kein Buch für unterwegs im Zug oder im Flieger, eher was fürs Regal. Aber für mich das beste Standardwerk zu C. Besonders gefällt mir wie immer wieder auf Betriebssystem spezifische Eigenheiten eingegangen wird.
Sicher ist vieles auch im Internet zu finden, aber hier haben sich die Autoren sichtlich bemüht möglichst alles hinein zu bringen. Kaum Fehler in den Codebeispielen und durchgehend anschauliche Erklärungen. Persönlich gefällt mir am besten, dass im Gegensatz zu anderen Einstiegs-Büchern zum Thema, die Lernkurve relativ linear bleibt. Kein Sprunghafter Anstieg zu komplexeren Themen, sondern es wird sinnvoll auf die erworbenen Vorkenntnise aufgebaut.



