In der Informatik gibt es den Begriff des „undefinierten Verhaltens“ (undefined behaviour) [WIKI7]: Wenn eine Software bzw. Code auf unterschiedlichen Systemen zu unterschiedlichen Ergebnissen führt, was natürlich nicht vorkommen darf, spricht man von eben diesem „undefinierten Verhalten“. In der Programmiersprache C hat sich dafür der Begriff „nasal demons“ etabliert. Den Ursprung hat dieser Ausspruch in der Usenet Gruppe comp.std.c und einer Diskussion in 1992. Ein Nutzer meinte damals:

“When the compiler encounters [a given undefined construct] it is legal for it to make demons fly out of your nose” [CATB]

Übersetzt also: Trifft der Compiler auf ein „undefiniertes Konstrukt“, sollte es ihm erlaubt sein, Dämonen aus deiner Nase fliegen zu lassen.

Ein einfaches Beispiel in C ist z.B. dieses [ACCU1]:

1    bool b;  
2    if (b)  
3      printf(“b is true\n”);  
4    if (!b)  
5      printf(“b is false\n”);

B wird als Boolesche Variable deklariert, aber nicht initialisiert. Es ist also nicht eindeutig klar, ob B wahr oder falsch ist. Der Compiler darf machen, “was er will”. Wie z.B. Dämonen aus deiner Nase fliegen lassen…

Zusammenfassung

Eine Erklärung aus der 'Nerd Enzyklopädie' über das Konzept des 'undefinierten Verhaltens' in der Informatik, insbesondere in der Programmiersprache C. Der Artikel beleuchtet den Ursprung des humorvollen Ausdrucks 'nasal demons' und demonstriert anhand eines einfachen C-Code-Beispiels die unvorhersehbaren Konsequenzen, wenn ein Compiler auf undefiniertes Verhalten trifft.


Hauptthemen: C-Programmierung Undefined Behavior Compiler Softwareentwicklung Nerd-Kultur Programmiersprachen

Schwierigkeitsgrad: intermediate

Lesezeit: ca. 5 Minuten