Der promovierte Autor lehrte 2001 an der TU Graz, sein Werk entstand damals nach seinen eigenen Worten aus einem Vorlesungsscriptum.Gleichzeitig möchte er die strukturierte Designphase in den Vordergrund stellen, auf das Warum bei Problemen eingehen und das Gelernte soll sofort direkt in der Praxis einsetzbar sein.Mit all diesen Anliegen scheitert der Autor kläglich, bedingt dadurch, dass er selbst trotz eigener "16-jähriger Entwicklungspraxis" nur über ein naives Grundverständnis für das Anliegen der Programmiersprache C verfügt.Der Autor ist nicht in der Lage, den C-Standard zu präsentieren, weder C89 noch C99 bilden die Grundlage seines Buches, C99 hat 2001 bereits existiert und wurde vom gcc unterstützt.Die Beispielcodes sind ein wildes Durcheinander von C89 und gcc-Extensions, der Autor gibt sich noch nicht mal die Mühe, seine eigenen in Anhang aufgeführten "Coding-Rules" einzuhalten,- mal verwendet er main(), mal int main(), und vergisst dabei schon mal das in C89 notwendige return 0; am Ende von main- Blockkommentare /* */ soll man prinzipiell nicht verwenden sondern ausschließlich // , da der Zeilenkommentar sicherer sei -> es ist genau umgekehrt- keine globalen Variablen -> sehr sinnvoll, nur hält sich der Autor durchgängig nicht daran, z.B. verwendet er eine Funktion wie void run(void), die zwingend globale Variablen verwenden muss- Variablen-Namenskonventionen mit Verstoß gegen den Standard werden vorgegeben (Unterstrich+Uppercase), z.B. _Coord_, _Rect_Besondere Schwierigkeiten hat der Autor beim einfachen Thema Initialisierungen, hier macht er alles falsch, was nur falsch zu machen ist- er behauptet, es gäbe für Variablen keinerlei implizite Initialisierungen -> falsch, sowohl globale wie static deklarierte oder endende, nicht explizit initialisierte Aggregattyp-Elemente werden 0 initialisiert (all bits zero)- er behauptet, alle Zeigervariablen sind NULL initialisiertZitat: "Per Konvention erfolgt die Initialisierung eines Pointers immer mit dem Wert NULL oder null."(nachdem er ja kurz zuvor behauptete, es gäbe KEINE impliziten Initialisierungen und Zeiger wären ganz normale Variablen) -> falsch, Zeigervariablen sind nicht immer NULL initialisiert und mit null niemals; dieser 'Tipp' gipfelt in dem Hinweis, wenn man NULL in stdlib.h nicht findet, solle man in anderen Headern suchen, andernfalls auch NULL oder null selbst definieren mit (void*)0;auch hier ignoriert der Autor aus Unkenntnis den Standard, der NULL IMMER (mind.) in stddef.h vorschreibt- er behauptet, endende nicht explizit initialisierte struct-Elemente wären nicht initialisiert -> falsch, diese sind immer 0 initialisiert, ebenso bei ArraysEin Blick in den C-Standard hätte genügt, der Autor hat aber eben diesen Überblick nicht, sonst hätte er nicht solchen Unsinn behauptet, der nur davon kommen kann, dass der Autor in seiner 'langjährigen Entwicklungspraxis' ausschließlich Programmieren durch Ausprobieren des gcc im non-Standard-Modus praktiziert hat. Der Autor empfiehlt den gcc, nennt aber keine der umfangreichen Optionen dieses Compilers, auch nicht die standardkonforme Programmierung mit -ansi, -std=c99 oder die warning-levels.Der Begriff C-Standard kommt nur 1x im Buch vor, und dann auch noch genau falsch herum:"struct-Variablen können nicht als Parameter oder return-Values bei Funktionsaufrufen verwendet werden"weil "nur manche Compiler ABWEICHEND vom C-STANDARD" dies erlauben, deswegen soll dieses "Feature" nicht benutzt werden -> absoluter Unsinn, es ist genau umgekehrt: ; dieser 'Tipp' des Autor ist komplett naiv,laienhaft und falsch, der Autor hat auch hierbei nichts verstanden.An anderer Stelle offenbart sich dann der Autor beim Thema size_t:'Ohne uns hier auf genauere Betrachtungen zum(speziell definierten, nicht Core-C) Datentyp size_t einzulassen...'der Autor sieht sich also als "Core-C" Entwickler, der abseits der Sprachstandards arbeitet und lieber eigene Versuche macht;auch hierbei greift er mehrfach fehl mit naiven Vorstellungen über Windows mit der Behauptung, int c; while( (c=getchar())!='\n' )funktioniert nur unter Unix und NICHT unter DOS/Windows (weil dort statt LF ein CR+LF jedes Zeilenende kennzeichnet) -> es zeigt sich wieder naives Unverständnis zu C-Grundlagen; denn selbstverständlich 'funktioniert' dieser Code auch unter Windows, da die C-Funktionen der Windows-Runtimelib die standardgemäßen Schnittstellen entsprechend transparent machen, was Sinn und Zweck von standardisierten Bibliotheken ist (in diesem Fall gelten die Standard-Schnittstellen für textbasierte Streams und stdin (auf welchem getchar() arbeitet) ist als Textstream im C-Standard vorgegeben).Als "wichtige Sicherheitsmaßnahme" hebt der Autor hervor, dass man den Pointer nach free(); immer NULL setzen solle,damit es bei 'komplexen' Programmen nicht zu Mehrfachfreigaben mit Segmentation Violation kommen kann;dass durch eine solche 'Sicherheitsmaßnahme' in Testläufen von 'komplexen' Programmen niemals die fehlerhaft implementierten Mehrfachfreigaben entdeckt werden können, erwähnt der Autor nicht und wieder zeigt auch hier wieder sein grundsätzliches Unverständnis im praktischen Umgang bei Entwicklung und Test von 'komplexen' Programmen.Den Compiler und dessen Optionen zur statischen Codeanalyse zu benutzen, kommt dem Autor in seiner 'langjährigen Entwicklungspraxis' also nicht in den Sinn, obwohl er vollmundig verspricht:"alle Beispiele im Buch sind so weit wie möglich an 'sinnvolle' Konstrukte aus dem Tagesgeschäft der SE angelehnt";Eine Erklärung, inwieweit ein in die Lehre an einer TU eingebundener promovierter Mitarbeiter über 'langjährige' 'Praxis' in der Softwareentwicklung verfügen kann, bleibt der Autor schuldig.Abschließend und offensichtlich als Füllmaterial für das Werk dienen Kapitel zu Unix-Tools wie grep und emacs, die der Autor auch den Lesern statt einer IDE empfiehlt.Im Anhang fehlt eine sortierte Auflistung der Standard-Bibliothek, als Nachschlagewerk taugt das Werk auch nicht.Der Autor hat aufgrund seiner naiven Vorstellung von 'praxis'orientierter Softwareentwicklung und Unkenntnis des C-Standard kläglich versagt, ein Lehrbuch für die "Softwareentwicklung in C" zu präsentieren.Grundlagen von C werden falsch oder gar nicht dargestellt (undefiniertes Verhalten, sequence point, lvalue,...), die Beispielcodes sind absolut laienhaft.Didaktisch ist das Werk ebenso unbrauchbar, der Autor widerspricht sich oft selbst und hält sich nicht an seine eigenen Code-Rules.Der Autor offenbart grenzenlose Naivität und Ignoranz, er lebt als "Core-C" Programmierer in seiner eigenen Welt.Das Buch ist veraltet, unbrauchbar und niemandem zu empfehlen.