Forum: PC-Programmierung Taugt das C-Buch?


von paul panther (Gast)


Lesenswert?

Hallo

taugt dieses Buch
http://openbook.galileocomputing.de/c_von_a_bis_z/
als Einstieg in C (wenige Grundkenntnisse sind bei mir vorhanden) und 
für weitere Vertiefung? Habe bisher noch kein C-Buch diesen Umfangs 
gefunden. Programmieren werde ich unter Linux, das nur neben bei.

von dito (Gast)


Lesenswert?

Auf jeden Fall! Ist ein super Buch! Sehr gut für Anfänger geeignet und 
auch als Nachschlagewerk für Profis, weil alles ausführlich erklärt ist. 
Ich benutze dieses Buch schon seit meinem Studium.

von Lehrmann M. (ubimbo)


Lesenswert?

Kann meinem Vorredner nur beipflichten...

von Dennis (Gast)


Lesenswert?

Mee too.

Super Buch, steht alles drin was man braucht.

von (prx) A. K. (prx)


Lesenswert?

Meine Begeisterung hält sich in Grenzen. Ich habe grad kurz in ein paar 
Stellen reingestochert:

- Das Buch suggiert in 7.1.4, dass "int" immer 32 Bits hat.

- Die wichtige Regel, dass ganzzahlige Rechnung immer mit mindestens 
"int" ausgeführt wird, wird in 7.1 halb vergessen und halb verdreht. 
Kap. 7.1.1 behauptet frech, eine spezielle Eigenschaft von "char" sei 
die Erweiterung zu "int". Dass dies für alle Typen kleiner als "int" 
gilt fehlt völlig, der Leser muss also annehmen, dass "short+short" als 
"short" gerechnet würde.

- Kann "volatile" wirklich universell auf Funktionen angewandt werden um 
damit deren Optimierung zu verhindern (9.12.3)? Mir wärs neu und auch 
ein Scan von C99 findet nichts darüber.

- Dass man durch 0 nicht dividieren darf, sollte sich rumgesprochen 
haben. Aber 0 durch irgendwas zu dividieren ist zulässig. Falsch ist 
also in 6.2.1: "Bitte beachten Sie, dass bei einer Division und bei der 
Verwendung des Modulo-Operators keine 0 vorkommen darf."

von Platinenschwenker .. (platinenschwenker)


Lesenswert?

Schau mal nach

"C als erste Programmiersprache; Vom Einsteiger zum Fortgeschrittenen" 
vom Vieweg + Teubner Verlag

gibt eine ganz frische neue 7. Auflage; kannst bei Amazon ins 
Inhaltsverz schauen; die Autoren sind alles Dozenten

der automatische Link ist falsch, dieser hier stimmt
http://www.amazon.de/gp/reader/3834812218/ref=sib_dp_pt#reader-link

von cproger (Gast)


Lesenswert?

Moins:
Ich habe mir während meinem Studium mehrere C-Bücher gekauft. Für den 
Einstieg in C ist dieses Buch von meiner Seite sehr zuempfehlen. Es hat 
viele Beispiele, welche den wichtigen Stoff gut vermitteln.
Die Details welche A.K aufgelistet hat spielen für den Einstieg keine 
Rolle. Ich will die Kommentare von A.K nicht alle auseinander nehmen, 
aber zb zu seiner "Int-Aussage" kann man im Buch ein paar Seiten vorher 
folgendes lesen:

5.2 Der Datentyp »int« (Integer)
"Der Datentyp int muss, gemäß ANSI C, mindestens eine Größe von zwei 
Byte aufweisen. Mit diesen zwei Bytes lässt sich ein Zahlenraum von 
-32768 bis +32767 beschreiben. Mit dem Datentyp int lassen sich nur 
Ganzzahlen darstellen. Die Abkürzung int steht für Integer. Hier kommen 
Sie auch gleich mit betriebssystemspezifischen Eigenheiten in Berührung. 
Auf 16-Bit-Systemen mag das eben Gesagte zutreffen. Dort ist ein Integer 
(int) auch wirklich zwei Bytes groß. Manch einer wird aber sagen: 
16-Bit-Systeme sind doch Schnee von gestern und eigentlich nur noch für 
MS-DOS- und Windows-3.1-Compiler relevant. Denken Sie aber daran, dass 
es noch andere Programmierplattformen neben Linux und MS Windows gibt 
(besonders wären hier die Embedded Systems und Mikrocontroller 
hervorzuheben), wo C seine Stärken ausspielen kann! ... "

Schönes Wik-end

von Yalu X. (yalu) (Moderator)


Lesenswert?

Noch eine Kleinigkeit zum Galileo-Buch: Ich kann darin nirgends eine
Beschreibung zum ##-Operator des Präprozessors finden. Ok, der ist für
den Anfang vielleicht auch nicht so wichtig. Aber da das Buch fast 1200
Seiten dick ist und ziemlich ausführlich auf Dinge wie CGI- und MySQL-
Programmierung eingeht, würde ich schon erwarten, dass das Hauptthema,
nämlich C, vollständig abgehandelt wird.

Viele Formulierungen und Beschreibungen in dem Buch sind unpräzise,
siehe

A. K. schrieb:
> Meine Begeisterung hält sich in Grenzen. Ich habe grad kurz in ein paar
> Stellen reingestochert:

Von diesen Ungenauigkeiten gibt es noch viele mehr. Man kann jetzt
darüber diskutieren, ob sie für einen Anfänger relevant sind oder nicht.
Die Autoren des von von Platinenschwenker vorgeschlagenenen Buchs "C als
erste Programmiersprache" haben jedenfalls einen deutlich klareren
Schreibstil, ohne deswegen gleich in "Normungssprache" zu verfallen.
Deswegen würde auch ich erst einmal dieses Buch in Betracht ziehen
(zumal es billiger ist ;-)).

Ich habe allerdings keines der beiden Bücher vollständig gelesen, so
dass ich diesbezüglich kaum einen fundierten Ratschlag abgeben kann,
Zudem gibt es noch viele weitere C-Bücher, die ich ebenfalls nicht
kenne.

Das einzige C-Buch, das gelesen habe, ist der Kernighan & Ritchie (1.
Auflage), und der ist wirklich gut geschrieben (weitgehend vollständig,
präzise, knapp und trotzdem gut verständlich). Leider gibt es m.W. immer
noch keine 3. Auflage, die den C99-Standard abdeckt.

von (prx) A. K. (prx)


Lesenswert?

Yalu X. schrieb:

> Das einzige C-Buch, das gelesen habe, ist der Kernighan & Ritchie (1.
> Auflage), und der ist wirklich gut geschrieben

Die deusche Version? Die solls ja in sich haben. Die Originalversion war 
jedenfalls als Einstiegslektüre ok. Nur hatten K&R eine deutlich 
einfachere Aufgabe, die Sprache war effektiv nur halb so gross wie 
heute.

> (weitgehend vollständig, präzise, knapp und trotzdem gut verständlich).

Knapp und verständlich ja. Aber da dies gleichzeitig die damalige 
Sprachreferenz war, wärs besser gewesen, sie wäre nicht ganz so knapp 
und etwas vollständiger ausgefallen. Es blieb manches offen, was nicht 
hätte offen bleiben dürfen (z.B. sign vs. value preserving conversions).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Das einzige C-Buch, das gelesen habe, ist der Kernighan & Ritchie (1.
> Auflage), und der ist wirklich gut geschrieben (weitgehend vollständig,
> präzise, knapp und trotzdem gut verständlich).

Du meinst ganz sicher die zweite Ausgabe. Die erste ist eher 
unbrauchbar, vor allem in der sehr merkwürdigen deutschen Übersetzung.
Außerdem beschreibt sie nur das "K&R"-C, das keine Typdeklarationen in 
Funktionsprototypen kennt.
Die zweite Ausgabe beschreibt C89 ("ANSI-C"). Die ist auch in der 
deutschen Übersetzung exzellent.

Ja, eine dritte Ausgabe mit C99 fehlt eindeutig.

von Yalu X. (yalu) (Moderator)


Lesenswert?

A. K. schrieb:
> Die deusche Version? Die solls ja in sich haben.

Rufus Τ. Firefly schrieb:
> Du meinst ganz sicher die zweite Ausgabe. Die erste ist eher
> unbrauchbar, vor allem in der sehr merkwürdigen deutschen Übersetzung.

Ja, es war tatsächlich die erste auf Deutsch :)

Sie las sich vor allem deswegen etwas holprig, weil zusammengesetzte
Substantive grundsätzlich getrennt geschrieben wurden (graus). Ansonsten
war die Übersetzung aber schon in Ordnung, und im Buchladen gab es die
Originalversion damals nicht.

> Nur hatten K&R eine deutlich einfachere Aufgabe, die Sprache war
> effektiv nur halb so gross wie heute.

Klar, deswegen erwarte ich von einem aktuellen C-Buch auch nicht, dass
es ebenfalls nur 200 Seiten dünn ist. Die zweite (deutsche) Auflage
hatte schon 300 Seiten, da könnte die dritte in etwa 400—500 Seiten
passen. Den C99-Standard zu beschreiben ist auch nicht schwieriger,
sondern nur mehr Arbeit für den Autor.

> Aber da dies gleichzeitig die damalige Sprachreferenz war, wärs besser
> gewesen, sie wäre nicht ganz so knapp und etwas vollständiger
> ausgefallen.

Ok, ich nehme das "weitgehend vollständig" zurück. Aber gerade weil es
die Sprachreferenz war, war es letztendlich per definitionem doch wieder
"vollständig". Auch im heutigen Standard gibt es viele Aspekte, die
nicht eindeutig definiert sind. Der Fortschritt im Vergleich zu damals
liegt allerdings darin, dass inzwischen die meisten dieser Aspekte
explizit als "undefined" oder "implementation defined" gekennzeichnet
sind.

> Außerdem beschreibt sie nur das "K&R"-C, das keine Typdeklarationen in
> Funktionsprototypen kennt.

Der K&R-1 sollte natürlich keine Empfehlung für heute sein, sondern nur
ein Beispiel, wie ein C-Buch prinzipiell geschrieben sein sollte. Den
damaligen (noch wackeligen) Stand der Sprache hat das Buch jedenfalls so
gut beschrieben, dass ich mich schon nach zwei Tagen in C wie zu Hause
fühlte.

Mit einem K&R-3 könnte man ein entsprechendes Erfolgserlebnis vielleicht
nach einer knappen Woche verspüren. Wegen des größeren Sprachumfangs
wäre es aber sinnvoll, das Buch in drei Teile zu teilen:

Im ersten Teil (ca. 200 Seiten) würde die Sprache und einige ausgewählte
Funktionen der Standardbibliothek in groben Zügen so weit erklärt, dass
der Leser in der Lage ist, eigene Programme zu schreiben.

Der zweite Teil (50—100 Seiten) würde Details und mögliche Fallstricke
beschreiben, also Dinge wie Promotionen, volatile und restricted
Variablen, Portabilitätsaspekte usw.

Der dritte Teil wäre eine Referenz der Standardbibliothek und muss nicht
mehr lehrbuchartig gechrieben sein, da der Leser inzwischen die Sprache
schon halbwegs beherrscht.

> Die zweite Ausgabe beschreibt C89 ("ANSI-C"). Die ist auch in der
> deutschen Übersetzung exzellent.

Der K&R-2 kann auch heute noch gut als Lehrbuch verwendet werden. Über
die C99-Erweiterungen, die bisher sowieso kaum jemand nutzt (außer den
Zeilenkommentaren ;-)), kann man sich auch nachträglich noch im Web oder
direkt im Standarddokument informieren.

von Rolf M. (rmagnus)


Lesenswert?

cproger schrieb:
> Die Details welche A.K aufgelistet hat spielen für den Einstieg keine
> Rolle.

Einem Einsteiger muß man nicht unbedingt jedes Detail erklären, aber 
wenn man es schon erklärt, muß das auch stimmen, gerade im Hinblick auf:

> Denken Sie aber daran, dass es noch andere Programmierplattformen neben
> Linux und MS Windows gibt (besonders wären hier die Embedded Systems und
> Mikrocontroller hervorzuheben), wo C seine Stärken ausspielen kann! ... "

Das Motto "es sind ja nur Einsteiger, da macht es nichts, wenn man denen 
was falsches hinschreibt, damit sie es leichter verstehen" ist in meinen 
Augen kein sehr gutes und sagt schon einiges über die Qualität eines 
Buchs aus.

> Ich will die Kommentare von A.K nicht alle auseinander nehmen,
> aber zb zu seiner "Int-Aussage" kann man im Buch ein paar Seiten vorher
> folgendes lesen:
>
> 5.2 Der Datentyp »int« (Integer)
> "Der Datentyp int muss, gemäß ANSI C, mindestens eine Größe von zwei
> Byte aufweisen. Mit diesen zwei Bytes lässt sich ein Zahlenraum von
> -32768 bis +32767 beschreiben.

Schon diesese beiden Sätze sind streng genommen falsch. Wieviele Bytes 
ein int groß ist, ist in ANSI C nicht festeglegt und kann auch 1 sein, 
und der minimale Wertebereich ist -32767 bis +32767.
(Und ja, das bedeutet tatsächlich, daß nach ANSI C ein Byte z.B. auch 16 
Bit breit sein darf)

von ich (Gast)


Lesenswert?

Viele bekannte Mängel im Buch wurden schon vor Jahren im Usenet 
diskutiert und auch dem Autor mitgeteilt. Leider sah er es bis heute 
noch nicht für notwendig, diese Mängel zu beseitigen.
Außer den hier schon angesprochenen Mängeln, befinden sich in der 
aktuellen Auflage unter anderem folgende:
http://www.pro-linux.de/news/1/14800/comm/1/show-all-comments.html

von ääääää (Gast)


Lesenswert?

Auf pronix.de gibt es sogar ein Forum zum Buch

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.