NE #8: “Hello World” hat einen Bug

Teil 8 der Nerd-Enzyklopädie über den vermutlich am weitesten verbreiteten Bug mit der geringsten Auswirkung…

Nicky Reinert
2 min readFeb 17, 2023
Nerd-Enzyklopädie #8

Solltest du jemals in den erhabenen Genuss kommen eine Programmiersprache erlernen zu dürfen, wird deine erste Lektion vermutlich die Ausgabe von „hello world!“ behandeln. Ein Klassiker, beliebt bei Jung und Alt und so etwas wie der Running Gag in der Programmierer-Szene. (Das Verständnis für Nerd-Humor muss man sich übrigens hart erarbeiten.)

Der erste nachvollziehbare Beleg für diese Tradition geht auf Brian Kernighan zurück. Dieser verfasste für die Bell Laboratories eine Anleitung zur Programmierung mit B (Überraschung: der Nachfolger von B ist übrigens C). Dort wurde „hello, world“ aber nur als Beispiel-Ausgabe eines Programmes verwendet. Erst in einer späteren Anleitung für die Programmiersprache C von 1978 führte Kernighan dann die heute gewohnte Variante ein:


main( ) {
printf("hello, world\n“);
}

(Das \n am Ende steht für „new line“). Wie dem auch sei: Die Umsetzung dieses einfachen Beispiel ist in den allermeisten Programmiersprachen nicht korrekt, sie hat einen Bug. Aber warum?

craiyon.com: “render a bug on a stone plate”

Unter Linux gibt es unter /dev das Gerät /dev/null — sendet man Ausgaben an dieses Gerät, passiert in der Regel gar nichts. /dev/null hat einen weniger bekannten Verwandten, nämlich /dev/full, das einen vollen Speicher simulieren soll. Sendet man eine Nachricht an diese Gerät, gibt es die Fehlermeldung zurück, das kein Speicher verfügbar ist:

echo "Hello World!" > /dev/full 
echo: write error: No space left on device1
echo $?
1

Die Rückmeldung ist 1, was soviel bedeutet wie: Ein Fehler ist aufgetreten. Die Idee dahinter ist, dass man prüfen kann, wie ein Programm auf Fehlermeldungen reagiert. Was aber passiert, wenn man die Ausgabe der C-Implementierung von „hello, world“ zu diesem Gerät schickt?

gcc hello.c -o hello
./hello > /dev/full
echo $?
0

Die Rückmeldung ist 0 — also: “Kein Fehler aufgetreten”, was natürlich nicht stimmen kann. Auch die Implementierungen in anderen mitunter sehr populären Sprachen zeigen dieses Verhalten.

Das Hello-World-Programm ist zwar simpel und erfüllt seinen Zweck; setzt man allerdings strenge Qualitäts-Maßstäbe an, erfordert das die Berücksichtigung aller denkbaren Situationen. Und das ist hier nicht der Fall. „hello, world„ hat also — streng genommen — einen Bug.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Nicky Reinert
Nicky Reinert

Written by Nicky Reinert

generalist with many interests, developer, photograph, author, gamer

No responses yet

Write a response