C'è una differenza tra la sicurezza del tipo e la solidità del tipo?


9

Ho cercato di prendere in giro le definizioni di sicurezza del tipo e solidità del tipo e sto avendo un diavolo di tempo. Ho chiesto a un professore di recente e dopo un po 'di pensiero ha detto che non c'era davvero alcuna differenza. Tuttavia dopo aver letto questo sembra che:

  • La sicurezza del tipo è una proprietà del linguaggio che afferma che l'applicazione di funzioni (e operatori) ai dati è significativa (ovvero 1 / "Hello" non ha senso ed è vietata)
  • Type Soundness è una proprietà di un sistema di controllo del tipo che garantisce che le previsioni del tipo statico siano accurate in fase di esecuzione.

Questo è chiaramente solo una nota per singole persone e mi chiedo se ci sia qualche standard all'interno della comunità PL. Ho fatto qualche ricerca e non ho trovato una risposta soddisfacente.

Risposte:


13

La sicurezza e la solidità del tipo sono sinonimi nella maggior parte dei lavori teorici. La solidità del tipo è spesso formulata rispetto a una semantica operativa come conservazione (tipo) e progresso. La conservazione afferma che se un'espressione ha un tipo, quindi dopo una fase di valutazione (tramite la semantica operativa), all'espressione risultante può essere assegnato lo stesso tipo. Il progresso afferma che se un'espressione non è un valore, cioè non è completamente valutata, ed è ben tipizzata, allora può essere ulteriormente valutata.

La "sicurezza del tipo" e la "solidità", ma in particolare la "sicurezza del tipo", sono anche ampiamente utilizzate dalla comunità di programmazione (non teorica), spesso in modi vaghi, ambigui o assolutamente errati. Ad esempio, un'API che utilizza tipi di enumerazione anziché consentire stringhe arbitrarie quando solo un sottoinsieme è significativo, ad esempio, potrebbe essere definita "più sicura per i tipi", ma questa affermazione non ha senso utilizzando la definizione teorica di "tipo sicuro "che è una proprietà binaria della lingua nel suo insieme.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.