Gibt es einen Unterschied zwischen Typensicherheit und Typensicherheit?

9

Ich habe versucht, die Definitionen von Typensicherheit und Typensicherheit auseinanderzuhalten, und ich habe eine verdammt gute Zeit damit. Ich habe kürzlich einen Professor gefragt und nach einigem Nachdenken sagte er, dass es wirklich keinen Unterschied gibt. Doch nach der Lektüre dieses wie es scheint:

  • Typensicherheit ist eine Eigenschaft der Sprache, die besagt, dass die Anwendung von Funktionen (und Operatoren) auf Daten sinnvoll ist (dh 1 / "Hallo" ist Unsinn und nicht zulässig).
  • Type Soundness ist eine Eigenschaft eines Typprüfungssystems, das garantiert, dass seine statischen Typvorhersagen zur Laufzeit genau sind.

Dies ist eindeutig nur eine einzelne Personennotiz und ich frage mich, ob es innerhalb der PL-Community einen Standard gibt. Ich habe etwas gesucht und keine zufriedenstellende Antwort gefunden.

Ben Kushigian
quelle

Antworten:

13

Typensicherheit und Typensicherheit sind Synonyme in den meisten theoretischen Arbeiten. Typensicherheit wird häufig in Bezug auf eine Betriebssemantik als (Typ-) Erhaltung und Fortschritt formuliert. Die Aufbewahrung besagt, dass, wenn ein Ausdruck einen Typ hat, nach einem Bewertungsschritt (über die operative Semantik) der resultierende Ausdruck denselben Typ erhalten kann. Der Fortschritt besagt, dass ein Ausdruck, der kein Wert ist, dh nicht vollständig ausgewertet und gut typisiert ist, weiter ausgewertet werden kann.

"Typensicherheit" und "Solidität", insbesondere aber "Typensicherheit", werden von der (nicht theoretischen) Programmiergemeinschaft häufig auf vage, mehrdeutige oder völlig falsche Weise verwendet. Beispielsweise kann eine API, die Aufzählungstypen verwendet, anstatt beliebige Zeichenfolgen zuzulassen, wenn nur eine Teilmenge von Bedeutung ist, als "typsicherer" bezeichnet werden. Diese Aussage ist jedoch unter Verwendung der theoretischen Definition von "Typ" nicht sinnvoll safe ", was eine binäre Eigenschaft der gesamten Sprache ist.

Derek Elkins verließ SE
quelle