Hinweis zu Affiliate-Links: Alle Produkte werden von der Redaktion unabhängig ausgewählt. Im Falle eines Kaufs des Produkts nach Klick auf den Link erhalten wir ggf. eine Provision.

Erste Hilfe, um Programmierer endlich zu verstehen

von Kathrin Passig
Ob eine Programmiersprache falsch eingegebene Daten verdaut, hängt nicht von ihrer Laune ab. Sondern davon, ob die Entwickler den Absturz einer Mars-Sonde riskieren wollen.

Dieser Artikel erschien zuerst in der gedruckten Ausgabe des WIRED Magazins im Mai 2015. Wenn ihr die Ersten sein wollt, die einen WIRED-Artikel lesen, bevor er online geht: Hier könnt ihr das WIRED Magazin testen.

Schon bei alltäglichen Beschäftigungen, die man vielleicht noch gar nicht als Programmieren begreift, kann man leicht in Probleme rund um Datentypen hineinstolpern. Zum Beispiel in Excel: Legt man fest, dass in einer Spalte das Datum stehen soll, schreibt dann aber einen Geldbetrag hinein, kann Excel nichts Vernünftiges anzeigen. Es ist so ähnlich, als würde man Pinselreiniger in einer Milchflasche aufbewahren: Man darf sich dann nicht wundern, wenn der Pfannkuchen irgendwie komisch schmeckt. Eine Variable ist eine Art Verpackung, die Hinweise darauf gibt, was man mit dem Inhalt machen kann und was nicht.

Unterschiedliche Sprachen benehmen sich unterschiedlich starrsinnig.

Ähnlich wie bei Verpackungen gibt es viele Datentypen: Variablen, in die nur eine mittelgroße Zahl passt, eine große Zahl, eine Zahl mit Nachkommastellen, nur ein Ja oder Nein, ein Datum, ein einzelnes Zeichen, eine Zeichenfolge. Die Sprache C kennt fünfundzwanzig verschiedene Datentypen nur für Zahlen.

Am Anfang einer Programmierlaufbahn steht man diesem Konzept oft kritisch gegenüber. „Warum muss ich dem doofen Programm sagen, dass die Variable für den Nachnamen vom Typ String ist?“, fragt man sich zum Beispiel. Ein String ist eine Zeichenfolge, und dass der Nachname eine Zeichenfolge ist, müsste das Programm doch erkennen können, es kann doch sonst so viel. Diesem Gedanken verschließen sich auch die Entwickler von Programmiersprachen nicht grundsätzlich. Deshalb benehmen sich unterschiedliche Sprachen in dieser Hinsicht unterschiedlich starrsinnig.

In Perl oder PHP ist „1“ wegen der Anführungszeichen erst mal keine Zahl, sondern ein Wort, das auch „eins“ oder „Hühnerbein“ lauten könnte. Fragt man Perl, was „1“ + 2 ist, bekommt man trotzdem das zur Antwort, was man als normaler Mensch erwarten würde, nämlich 3. Andere Sprachen, zum Beispiel Javascript, behandeln nicht etwa die „1“ als eine Zahl, sondern die 2 wie ein Wort und hängen diese beiden Wörter aneinander. Statt 3 kommt „12“ heraus. Python tut keins von beidem und gibt stattdessen eine Fehlermeldung aus, die sinngemäß lautet: „Wenn du ein Pluszeichen benutzen willst, schreib gefälligst davor und dahinter eine Zahl, ich weigere mich, Wörter zu addieren, wo sind wir denn hier?“

Diese Pingeligkeit hat auch Vorteile. Es fällt zum Beispiel frühzeitig auf, wenn man statt einer 1 versehentlich ein Hühnerbein verwendet. Eine großzügige Sprache wird versuchen, das Hühnerbein irgendwie zu verdauen. Vielleicht kommt dabei das Richtige heraus, vielleicht auch nicht. Ohne Fehlermeldung weiß man das erst genauer, wenn die Mars-Sonde beim Start in Stücke fällt. Eine weniger nachsichtige Sprache wird einem gar nicht erst erlauben, das Hühnerbein zu verwenden. Man spricht in diesem Zusammenhang auch von starker und schwacher Typisierung. Stark typisiert sind Sprachen, die jedes Vergehen mit einem „So geht das aber nicht, junge Frau!“ kommentieren. Sprachen, die nicht sofort mit erhobenem Zeigefinger rummahnen, nennt man schwach typisiert.

Am besten, man verlässt den Raum oder das Internet, wenn sich eine Diskussion anbahnt.

Anfänger finden oft die weniger pingeligen Sprachen sympathischer, da man bei den ersten Programmierversuchen seltener angemeckert wird. Unter den Profis gibt es zwei Lager (grob vereinfacht, in Wirklichkeit eher zweiundzwanzig): Die einen sind der Meinung, dass nur äußerst strikte Meckersprachen die Welt vor dem sicheren Untergang durch Pfusch und explodierende Mars-Sonden bewahren können. Die anderen weisen darauf hin, dass Fehler durch falsche Datentypen nur einen so kleinen Teil der häufigen Programmierprobleme ausmachen, dass es Wichtigeres im Leben gibt.

Aber Diskussionen darüber, welcher Umgang mit Datentypen mehr Vorteile bringt, sind sowieso nur eine Untergruppe der fruchtlosen Diskussionen darüber, welche Programmiersprache die bessere ist. Am besten, man verlässt den Raum oder das Internet, wenn sich eine anbahnt. In der so gesparten Zeit kann man ja zu Hause den Pinselreiniger in angemessenere Behältnisse umfüllen.

KATHRIN PASSIG und ANNE SCHÜSSLER schreiben leidenschaftlich Blogs, Tweets und Code. In WIRED gaben sie regelmäßig Überlebenstipps für Nachwuchsprogrammierer.

GQ Empfiehlt