Wenn Sie auf natürliche Weise in einer statisch typisierten Sprache arbeiten können, ist statische Typisierung der richtige Weg. Im Allgemeinen besteht der Zweck eines Typsystems darin, zu verhindern, dass Sie Operationen mit undefinierter Semantik ausführen (string) "hello" + (bool) true
. Das zusätzliche Sicherheitsniveau, das Sie daran hindert, diese Vorgänge auszuführen, kann eine gute Möglichkeit sein, Fehler in Ihrem Code zu verhindern, auch ohne umfangreiche Komponententests. Das heißt, die Typensicherheit bietet ein weiteres Maß an Vertrauen in die semantische Korrektheit Ihres Codes.
Typsysteme sind jedoch sehr schwer zu finden. Ich glaube nicht , es ist eine perfekte Art System in der Natur zum Zeitpunkt des Schreibens dieses Artikels. (Mit "perfektes Typsystem" meine ich ein striktes Typsystem, das keine ausführlichen Code-Annotationen erfordert, keine falsch positiven Typfehler erzeugt und dessen Typfehler für den Programmierer leicht zu verstehen sind.) Außerdem kann es Es ist schwierig, die wirklich guten Typsysteme zu verstehen, die es gibt. Als ich Haskell lernte, kann ich Ihnen nicht sagen, wie viele obskure Typfehler ich beim Versuch hatte, etwas zu schreiben, das (für mich) wie korrekter Code aussah. Normalerweise war der Code nicht richtig (was ein Punkt zugunsten des Typsystems ist), aber es hat viel gedauertvon Arbeit, um die Fehlermeldungen vom Compiler zu verstehen, damit ich die zugrunde liegenden Probleme beheben konnte. In OO - Sprachen, können Sie schließlich finden sich denken : „Dieses Argument sollte kontra mit dem Eingabetyp, nicht covariant!“, Oder (wahrscheinlicher) Rückkehr zu Umwandlungen von den Grenzen des Typs System zu entkommen. Typsysteme können viel schwieriger werden, als Sie denken.
Ich verstehe, dass die Schwierigkeit, gute Typsysteme zu entwickeln, Teil der Motivation von Gilad Bracha ist , die Unterstützung für steckbare Typsysteme in Newspeak aufzunehmen.