In Eric Lipperts Artikel What's Up With Hungarian Notation? , erklärt er, dass der Zweck der ungarischen Notation (der guten Art) darin besteht,
Erweitern Sie das Konzept von "Typ", um zusätzlich zu Speicherrepräsentationsinformationen auch semantische Informationen zu erfassen.
Ein einfaches Beispiel wäre das Präfixieren einer Variablen, die eine X-Koordinate darstellt, mit "x" und einer Variablen, die eine Y-Koordinate darstellt, mit "y", unabhängig davon, ob diese Variablen Ganzzahlen oder Gleitkommazahlen sind oder was auch immer, so dass Sie versehentlich schreiben xFoo + yBar
sieht der Code eindeutig falsch aus.
Aber ich habe auch über das Typensystem von Haskell gelesen, und es scheint, dass man in Haskell dasselbe erreichen kann (dh "das Konzept des Typs auf semantische Informationen erweitern"), indem man tatsächliche Typen verwendet , die der Compiler für Sie prüft. Im obigen Beispiel xFoo + yBar
würde Haskell die Kompilierung tatsächlich fehlschlagen, wenn Sie Ihr Programm korrekt entworfen hätten, da sie als inkompatible Typen deklariert würden. Mit anderen Worten, es scheint, als ob das Typensystem von Haskell die Prüfung zur Kompilierungszeit unterstützt, die der ungarischen Notation entspricht
Ist die ungarische Notation also nur ein Hilfsmittel für Programmiersprachen, deren Typsysteme keine semantischen Informationen codieren können? Oder bietet die ungarische Notation etwas, das über das hinausgeht, was ein statisches Typensystem wie das von Haskell bietet?
(Natürlich verwende ich Haskell als Beispiel. Ich bin mir sicher, dass es andere Sprachen mit ähnlich ausdrucksstarken (reichen? Starken?) Systemen gibt, obwohl ich keine gefunden habe.)
Der Einfachheit halber spreche ich nicht von der Annotation von Variablennamen mit dem Datentyp , sondern von Informationen über die Bedeutung der Variablen im Kontext des Programms. Beispielsweise kann eine Variable eine Ganzzahl oder ein Gleitkomma oder ein Double oder ein Long sein, aber die Variable hat möglicherweise die Bedeutung, dass es sich um eine relative x-Koordinate handelt, die in Zoll gemessen wird. Dies ist die Art von Informationen, die ich über die Codierung in ungarischer Notation (und über Haskell-Typen) spreche.