Open Source im professionellen Einsatz

C-Programmierung unter Linux

Tux liest

Das Buch von Helmut Herold und Jörg Arndt soll nicht nur Neulinge an die Linux-Muttersprache C heranführen, sondern auch erfahrene Programmierer weiterbilden. Das gelingt - zum Teil.

Mit knapp 1100 Seiten ist das Buch sehr umfangreich. In zwei Punkten hebt es sich deutlich von Standardwerken ab wie "The C Programming Language" von Kernighan und Ritchie oder "Programmieren mit C - ANSI Standard" von Lowes/Paulik: Es beschreibt den aktuellen ANSI-Standard C-99 und gibt viele Hinweise über Klippen und Fallen bei der C-Programmierung.

Sein Inhaltsangebot kann nur mit "vollständig" beschrieben werden. Angefangen bei einer Vorstellung unterschiedlicher Editoren über einfache Ein- und Ausgabe bis hin zur Optimierung von Dateizugriffen und zur Speicherdarstellung von Fließkommazahlen - es wird einfach alles beschrieben.

Besonders gut ist die Einführung der Datentypen gelungen. Die Autoren haben auf den zwölf Seiten sogar Platz für Rechenbeispiele und eine detaillierte Beschreibung der negativen Zahlen gefunden. Selbst die Überlaufproblematik wird ausführlich thematisiert und mit Binär-Rechenbeispielen verdeutlicht - einfach vorbildlich.

Die Behandlung des Datentyps »char« ist für Laien etwas unglücklich geraten, die Erklärung ist allerdings korrekt. So wird beschrieben, dass er "immer genau ein Zeichen des Ascii-Zeichenvorrats" speichern könne. Das kann zu der Fehlinterpretation führen, man könne etwa ein Euro-Zeichen in einem »char« speichern. Dabei wird tatsächlich nur die Ordnungszahl gespeichert, so dass die Darstellung am Bildschirm oder Drucker später vom gewählten Zeichensatz abhängig ist.

Auch ist die Verwendung von »char« und »int« bei der Funktion »getchar()« verwirrend und nicht konsistent: Wurden bis dahin Zeichen nur in »char« gespeichert, kommt bei der Beschreibung von »getchar()« ohne Kommentar ein »int« zum Einsatz. Das wird dann bis Kapitel 11.6 beibehalten, um nachfolgend Ergebnisse von »getchar()« wahlweise in »char« oder »int« zu speichern - ohne Hinweis auf einen möglichen Überlauf oder gar den Grund für die unterschiedlichen Typen überhaupt zu nennen.

Nostalgische Grafik und Gliederungsprobleme

Kontrollstrukturen haben die Autoren sehr ausführlich eingeführt und mit Struktogrammen aus etwas altbackener Ascii-Grafik sowie teilweise handkorrigierten und gescannten Abbildungen anschaulich gemacht - bei einem solchen Buch wären allerdings Grafiken aus einem Zeichenprogramm zu erwarten. Gelungen ist das Kapitel über die interne Darstellung von Datentypen und die Problematik beim Vergleichen von Fließkommazahlen - nur ein Beispiel, bei dem der Leser viele praxisrelevante Programmiertipps erhält.

Das größte Problem des Buchs ist die Strukturierung, die Autoren schweifen oft meilenweit vom Thema ab. So steht am Anfang des Kapitels über Ein- und Ausgabe zunächst eine Einführung in Funktionen, Header-Dateien und Präprozessor-Direktiven. Im Unterkapitel zu »scanf()« findet sich dann eine lange Abhandlung über die Mathe-Bibliothek »math.h«. Schließlich wird die Behandlung von »EOF« bei »getchar()« erst bei der Vorstellung der »while«-Schleife besprochen, ganze 167 Seiten nach Einführung der Funktion.

Abschweifungen

Genauso falsch platziert, nämlich im ersten Drittel des Buchs, ist eine fast 50-seitige Einführung in die Grafikprogrammierung mit einer selbst entwickelten Bibliothek als Frontend zu Qt. Dabei wird munter mit Funktionszeigern, Variablenzeigern und Referenzen hantiert, die erst 120 Seiten später überhaupt eingeführt werden. Auch empfiehlt sich für die Beispiele fundiertes Wissen der höheren Algebra, insbesondere der Abbildungen und Räume.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook