Hatte ich schon mal erwähnt dass mich mit der Programmiersprache C eine ausgeprägte Hassliebe verbindet?
In C programmieren hat für mich schon immer eine besondere Faszination gehabt - wenn alles klappt wie gedacht bekommt man Sachen in kaum einer anderen Sprache so elegant hin. Spontan aus dem Bauch heraus bevorzuge ich C zum experimentieren vor fast alle anderen Sprachen - sicher auch ein Grund warum ich eigentlich nach wie vor mehr ein Atmega- als ein Propeller-Anhänger bin. Es ist einfach toll wenn es klappt, und zumindest ich find den Code der dabei herauskommt einfach schön. Soweit meine Liebe zu C.
Aber die Medaille hat zwei Seiten. Die Produktivität, wenn ich Sachen mit C entwickle, ist schwer vorhersagbar. Manchmal schaffe ich den "Durchmarsch" und bekomme eine mittelmäßig komplexe Sache an einem Nachmittag gebacken. Und manchmal beiß ich mir mit C tagelang die Zähne aus an einem Projekt das nach Ermessen *eigentlich* perfekt funtionieren müsste, es aber nicht tut. Das erinnert irgendwo auch an Goethe's Zauberlehrling - das Ding entfaltet seinen eigenen Willen und tut aus unerfindlichen Gründen Sachen die es eigentlich nicht tun sollte.
Und dann schaut man den Code einmal durch, findet keinen Fehler, ein zweites Mal: wieder nix. Und so weiter... bis irgendwann die Erleuchtung kommt, und man sich vor den Kopf hämmert wieso man so nen trivialen Fehler nicht gleich gesehen hat. Wenn ich mit C-Programmierung meine Brötchen verdienen müsste, nach dem Prinzip "Leistung = Arbeit pro Zeit" würde ich C wahrscheinlich hassen. So, als Hobby, ist es dagegen mehr ein Spaß und eine Herausforderung, dahinter zu kommen was das Problem war. So bisschen wie Kreuzworträtsel lösen.
Im Fall der neuen Firmware für den CPMputer lag der Tipfehler in diesem bisschen Code:
Eigentlich sollte das Programm an dieser Stelle im Fehlerfall zurückkehren zur aufrufenden Funktion und sich dort ordentlich beschweren, was soweit auch tatsächlich funktinierte.
Ich hatte nur dummerweise das Semikolon hinter dem return vergessen. Da White-Spaces wie Leerzeichen, Tabs, Zeilenumbrüche in C keine syntaktische Bedeutung haben, hat sich das return einfach unauffällig die nächste Zeile als Parameter annektiert, die Zuweisung zur Variable Addr, die eigentlich für den weiteren normalen Ablauf gedacht war, war dann dort eben nicht mehr vorhanden. Soviel Ärger wegen eines winzigen vergessenen Semikolons...
Überhaupt könnte ich inzwischen schon diverse Annekdoten zum Thema erzählen. Irgendwann musste ich z.B. mal auf die harte Tour lernen dass eine "unsigned" Variable auch dann nicht kleiner als Null wird, wenn man von Null Eins subtrahiert, aber das ist eine andere Geschichte.
Trotzdem ist die Faszination von C für mich nach wie vor ungebrochen. Hab ich womöglich ne masochistische Ader?
