C: Advanced Topics#
C ist eine kleine und einfache Sprache, was den Sprachumfang angeht. C ist auch eine schnelle Sprache, da compilierter Maschinencode ausgeführt wird.
Der Teufel liegt allerdings im Detail — jeder, der zum Beispiel mit
Pointern hantiert, wird sofort beipflichten. Oder jeder, der einmal
den beinharten Typenkonvertierungen zwischen signed und
unsigned aufgesessen ist. Oder jeder, der …
Der Kurs beleuchtet die nicht ganz so oft beschrittenen dunklen Ecken der Sprache, widmet sich intensiv der Fehlersuche, und versucht Erklärungen zu geben, wo diese aus der Sprachdefinition nicht so offensichtlich greifbar sind.
Zielpublikum#
Der Kurs richtet sich an erfahrene C-Programmierer, die den Verdacht haben, dass manches, was sie tun, auf Zufall basiert.
Kursinhalt#
Typkonversionen und ihre Fallen: die Lücken im Typensystem von C
Techniken zur Typensicherheit
Der C-Präprozessor
Dunkle Ecken
C99 Features, um den C-Präprozessor unnötig zu machen.
Programmhygiene. Verschiedene Wege, sich von Compiler und Linker den Weg zu sauberen Programmen weisen zu lassen.
``const``
``static``
Explizite Typensicherheit
Performance
Optimierungstechniken, die Compiler anwenden - viele händische Optimierung sind unnötig und erschweren die Lesbarkeit
Memoryzugriff, Caches, Cache-Thrashing
Debugging mit dem GNU-Debugger
gdbProfiling mit verschiedenen Tools
gprof: der Ur-Profiler in Unixvalgrindbeziehungsweisecallgrindoprofile: Profiling mit Hardwareunterstützung
Verschiedenes
Was heisst eigentlich
volatile?Was ist Alignment?
Compiler “Built-Ins”, wie zum Beispiel Atomare Instruktionen
Empfohlene Vorkenntnisse#
Solide Kenntnisse in C werden vorausgesetzt.