Andrew Koenig, C traps and pitfalls, Addison-Wesley Publishing Company, 147 Seiten, DM 46, ISBN 0-201 -17928-8
Sind Sie C-Programmierer, und wollten Sie schon immer einmal wissen, was Sie so alles in Ihrer geliebten Programmiersprache falschmachen können, wo man doch gerade C vorwirft, es sei perfekt zum Fehlermachen geeignet? Oder gehören Sie zu den (Pascal- oder Modula)-Fans, die sich gerne über C-Programmierer und deren 'lesbare' Programme amüsieren?
Sollten Sie einer dieser beiden Gruppen angehören, möchte ich Ihnen ein Buch vorstellen, das ein wahrer Leckerbissen für Sie sein muß: C-Traps and Pitfalls von Andrew Koenig. Andrew Koenig, seines Zeichens Programmierer auf 'großen' Maschinen, hatte früher sehr viel mit der Sprache PL/l zu tun, so daß er schon 1977 einen Vortrag über Fehlermöglichkeiten in PL/l abhielt. Kurz danach wechselte er von der Columbia University zu AT&T, wo C in großem Umfang verwendet wird. Nicht nur durch seine eigenen Anfängerschwierigkeiten als C-Programmierer kam er auf die Idee, alle möglichen Probleme zu sammeln und diese als internes Schreiben zu verteilen. Er war nicht wenig verwundert, daß er mehr als 2000 Rückmeldungen von Kollegen bekam, so daß er sich entschloß, die (jetzt geordnete) Sammlung als Buch herauszugeben.
Sicherlich ist das (komplette) Buch nicht für den absoluten Anfänger geeignet und kann daher ein gutes C-Lehrbuch und auch die C-Bibel von Kernighan und Ritchie nicht ersetzen. Wer dieses Buch aber durchgearbeitet hat (selbst das 'Querlesen' ist interessant, wenn auch nicht ganz so erfolgreich), kann sicherlich mit Stolz behaupten, er hat C recht gut verstanden. Testen Sie es doch einmal, und versuchen Sie folgende Zeile zu interpretieren:
(*(void(*)())0)();
Sehr positiv ist mir aufgefallen, daß der Autor diese komplexe Art nicht unbedingt als ein gutes Beispiel des Software Engineerings darstellt, sondern immer wieder daraufhinweist, was ein guter Stil und was optimiert ist: Zusammengefaßt ergibt sich dann wohl ein optimales Programmieren.
Das Buch ist gut gegliedert und enthält einen umfangreichen Index, der auch die 'Suche nach Fehlern' in Grenzen hält. Durch die Gliederung kann sich auch ein Anfänger in 'C traps and pitfalls' einlesen, denn gerade in der Anfangszeit wirft man am schnellsten die Flinte ins Korn. Der Autor selbst beschreibt, daß er in seinem ersten 'Hello World'-Programm die seltsamsten Erscheinungen hatte - da heißt es sicher, guten Willen zu beweisen. Das erste Kapitel beschäftigt sich mit den lexikalischen Fall stricken (' = ist not ==' oder '& and l are not && or II' und so weiter), während im zweiten auf syntaktische ('watch those semicolons!') und im dritten auf semantische Fehlermöglichkeiten ('pointers are not arrays') eingegangen wird. In den folgenden Kapiteln werden ausführlich Probleme mit dem Linker, dem Librarian und dem Präprozessor abgehandelt. Das letzte lehrreiche Kapitel beschäftigt sich mit den Problemen, die sich beim Portieren von C-Programmen auf andere Rechner ergeben können.
Andrew Koenig schreibt im typisch amerikanischen, lockeren Stil, ohne unsachlich zu werden. Dadurch wird das Buch selten langweilig und ist an bestimmten Stellen doch so anspruchsvoll, daß man die eben gelesenen Zeilen besser ein weiteres Mal lesen sollte. Der Lerneffekt wird dadurch verstärkt, daß es zu jedem Kapitel interessante Aufgaben gibt, deren Lösungen sich auch im Buch finden (was nicht unbedingt selbstverständlich ist). Zum Schluß sei noch ein kleines Beispiel zum Knobeln angeführt, das sich, das sei nur nebenbei angemerkt, auch in Pascal umsetzen läßt...
int i; int a[N]; for (i = 0; i <= N; i++) a[i]=0;
Sehen Sie das Problem? Im Buch finden Sie es erklärt. Allen C-Fans und ersthaften C-Anwendern sei es wärmstens empfohlen. Sie werden mir zustimmen, daß das Lesen eines schönen Buchs angenehmer ist, als stundenlang Fehler zu suchen...
SH