Rezension zu O'Reillys »C in a nutshell (deutsch)«
Der Klappentext übertreibt nicht: »C in a nutshell« ist in der Tat ein Buch, das man in Reichweite haben sollte, wenn man mit der Programmiersprache C arbeitet. Das gilt sowohl für den Anfänger als auch den gelegentlichen und den erfahrenen C-Programmierer:
- Die Beschreibung der grundlegenden Sprachmittel ist so aufgebaut, daß sie sich als Einführung in C eignet. Der erste Teil des Buches, der der Sprache selbst gewidmet ist, erläutert in den ersten 10 Kapiteln Grundlagen der Sprache, einfache und komplexe Datentypen, Ausdrücke, Operatoren und Anweisungen und Zeiger.
- Verschiedene für die Programmierung in C wichtige Konzepte werden logisch schlüssig und gut auffindbar über mehrere Kapitel hinweg entwickelt. Drei Kapitel über dynamische Speicherverwaltung, Ein- und Ausgabe und die Möglichkeiten des Präprozessors vervollständigen den Sprachteil.
- Mit den beiden folgenden Teilen enthält das Buch ebenso eine Referenz der Standardbibliothek wie eine Erläuterung der vielleicht verbreitetsten Werkzeuge zur Arbeit mit C-Programmen: des Compilers gcc, des Diensprogramms make zum Bau komplexer Programme und des Debuggers gdb.
Damit beantwortet »C in a nutshell« auf seinen etwa 600 Seiten alle die Fragen aus der täglichen Arbeit mit C, die sich auf die Programmiersprache und den Umgang mit ihr beziehen. Trotz seiner guten Verständlichkeit trägt dieses Buch im Vergleich mit anderen Werken über C, etwa »The C programming language« von Kernighan und Ritchie, deutlich den Charakter einer Referenz statt den eines Lehrbuchs, wodurch es seinem eigenen Anspruch gerecht wird.
»C in a nutshell« eignet sich sicherlich nicht als Einführung ins Programmieren an sich, was aber erklärtermaßen auch nicht sein Ziel ist. Ebenso erläutert das Buch Algorithmen und Datenstrukturen nur in dem Maß, in dem sie zur Illustration der Sprachkonzepte dienen. Die Autoren gehen mit Ausnahme der Beschreibung der GNU-Werkzeuge am Ende des Buches nicht auf Eigenheiten bestimmter Compiler, Entwicklungsumgebungen oder Betriebssysteme ein. Ebenso verzichten sie vollständig darauf, andere Bibliotheken als die Standardbibliothek zu beschreiben, sondern halten sich an den Umfang des C99-Standards.
Neben dem klaren inhaltlichen Aufbau des Buches trägt die große Zahl von Codebeispielen zu seiner Verständlichkeit bei. Die Beispiele sind in der Regel kurz, voneinander unabhängig und beschränken sich auf jeweils einen zu illustrierenden Aspekt. Das einzige größere Beispiel ist eine Implementierung eines binären Suchbaums zur Demonstration der dynamischen Speicherverwaltung.
Den Autoren gelingt es einerseits, den Leser so an jedes Thema heranzuführen, daß er Hintergründe versteht und Erklärungen mühelos folgen kann, ihn andererseits aber nicht mit Wiederholungen oder Trivialitäten aufzuhalten. Die Referenz der Standardbibliothek macht es durch Querverweise leicht, sich einen Überblick über den Funktionsumfang zu verschaffen.
Während der Titel des Buchs für die deutsche Ausgabe nicht übersetzt wurde, zeichnet sich der Text durch einen bewußten Umgang mit der deutschen Sprache aus. Es ist vorbildlich gelungen, die meisten der ursprünglich englischen Fachbegriffe ins Deutsche zu übersetzen, ohne sie aufgesetzt oder befremdlich wirken zu lassen. Allerdings merkt man einigen sprachlichen Konstruktionen an, daß sie einer Übersetzung aus dem Englischen entstammen.
»C in a nutshell« ist meiner Meinung nach ein empfehlenswertes Buch, wenn man bereits Programmierkenntnisse und ein kompaktes, vollständiges und gut benutzbares Referenzwerk für die Arbeit mit der Programmiersprache C sucht.