Die Sache mit den Typen

Nein, das ist kein Bild von Gipf-Oberfrick sondern...
Beitrag erstellt am:28.10.17

Über das Sowohl-als-auch dynamischer und statischer Typisierung

Über Twitter bin ich auf den folgenden Artikel gestossen: The Ergonomics of Type Checking

Martin Fowler hat auf den Tweet mit dem Verweis auf einen seiner Artikel aus dem Jahr 2005 reagiert: Dynamic Typing

Typen als Verständnishilfe

Beide Beiträge sind lesenswert. Fowler und Feathers sprechen aus meiner Sicht im Kern den gleichen Punkt an: Dynamisch typisierte Sprachen machen das Schreiben von Code leichter, statisch typisierte Sprachen erleichtern das Lesen von Code. Es verhält sich mit dem Typensystem ähnlich wie mit der Grammatik für eine Sprache wie z.B. Deutsch: Das Ziel der Grammatik ist nicht primär, dem Schreiber das Schreiben zu erleichtern, sondern dem Leser das Verstehen.

Die Suche nach dem erwarteten Typ...

Im Umfeld von Javascript verbringe ich wiederholt Zeit mit der Suche nach dem korrekten Typ für Argumente von Funktionen und Callbacks. Denn es ist ja nicht so, dass es in einer dynamisch typisierten Sprachen keine Typen gibt, sie sind in vielen Fällen jedoch schlicht nicht offensichtlich. Oft bleibt dann nur der mühsame Weg über Versuch und Irrtum. Selbst eine leistungsfähige IDE wie IntelliJ liefert ohne verlässliche Typeninformation häufig keine brauchbare Unterstützung.

... und der Wunsch nach Bequemlichkeit

Noch schlimmer: die Dokumentation vieler Javascript-Bibliotheken und Frameworks ist zu oft unvollständig und fehlerhaft, wenn es um die erwarteten Typen geht. Diese Nachlässigkeit ist primär genau das: eine Nachlässigkeit und damit eine Frage der Disziplin. Typescript kann dabei als Versuch gesehen werden, es dem geneigten Javascript-Entwickler leichter zu machen, sich bewusster um das Thema Typing zu kümmern. Dies auch im Sinne des von Michael Feathers im Artikel formulierten Wunsches, beim Schreiben von Code mit dynamischen Typen beginnen zu können, um dann Schritt für Schritt die relevante Typ-Information zu ergänzen. Das passt aus meiner Sicht auch ganz gut zu einer Faustregel aus dem Scala-Umfeld: "Refactor from tests to types".

(K)eine Frage der Sicherheit - mit der Bitte um Verständnis

Zum Schluss noch ein Wort bezüglich der sog. Typensicherheit: Ja, es ist hilfreich, wenn der Compiler uns diese Arbeit abnimmt. Und ja, man kann diese "Sicherheit" mittels entsprechendem Testcode auch für dynamisch typisierte Sprachen erreichen. Doch viel entscheidender bleibt für mich der Umstand, dass Typen das Verständnis für und den Zugang zu einer Codebasis erleichtern. Genauso wie mir die Gross-klein-Schreibung im Deutschen das Lesen eines Textes erleichtert, sehe ich Typ-Information als wertvolle Hilfe beim Lesen und Verstehen von Code.