Tipizzazione forte: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+link
Nessun oggetto della modifica
Riga 1:
In [[informatica]], e in particolare in [[programmazione]], l'espressione '''tipizzazione forte''' (''strong typing'') può essere usata per caratterizzare il tipo di regole che un determinato [[linguaggio di programmazione]] impone, a livello [[sintassi|sintattico]] o [[semantica|semantico]], circa la [[tipo di dato|tipizzazione dei dati]] e all'uso dei dati in relazione al loro tipo. L'opposto della ''tipizzazione forte'' è la '''tipizzazione debole'''.
 
==Descrizione==
In un '''linguaggio fortemente tipizzato''', il [[programmatore]] è tenuto a specificare il tipo di ogni elemento sintattico che durante l'[[esecuzione (informatica)|esecuzione]] denota un valore (per esempio un valore [[costante (informatica)|costante]], una [[variabile (informatica)|variabile]] o una [[espressione (informatica)|espressione]]), e il linguaggio garantisce che tale valore sia utilizzato in modo coerente con il tipo specificato: per esempio, non è possibile eseguire una somma aritmetica su dati di tipo [[stringa (informatica)|stringa]]. Questo concetto generale può applicarsi con diverse sfumature; a seconda del contesto, dunque, l'espressione ''linguaggio fortemente tipizzato'' può riferirsi a cose leggermente diverse:
 
* '''tipizzazione statica''': tutti i controlli sull'uso corretto dei valori rispetto al loro tipo vengono eseguiti durante la [[compilatore|compilazione]];
* '''sicurezza rispetto ai tipi''' (''[[sicurezza rispetto ai tipi|type safety]]''): è garantito che vengano fatti controlli esaustivi sull'uso dei valori rispetto al loro tipo, ma non necessariamente durante la compilazione (un [[programma (informatica)|programma]] potrebbe fallire ''durante l'esecuzione'' a causa di [[violazione di tipo|violazioni di tipo]])
* impossibilità di eseguire [[conversione di tipo|conversioni di tipo]];
* impossibilità di eseguire [[conversione di tipo|conversioni di tipo]] implicite;
 
Un esempio limite di linguaggio debolmente tipizzato è il [[linguaggio macchina]], in cui un'area di [[memoria (informatica)|memoria]], rappresentata nel codice da un [[indirizzo di memoria]], può essere usata indifferentemente per contenere valori di qualunque tipo, numeri interi, numeri con la virgola, caratteri, e così via. I [[linguaggio di programmazione ad alto livello|linguaggi di programmazione ad alto livello]] tendono ad avere [[sistema dei tipi|sistemi dei tipi]] più sicuri e quindi ad avvicinarsi all'ideale della forte tipizzazione, ma in genere rimangono disponibili meccanismi per trattare dati in modo flessibile che si prestano a essere utilizzati per violare il sistema dei tipi. Per esempio, il [[linguaggio C]] fornisce almeno tre meccanismi che lo qualificano come linguaggio debolmente tipizzato:
 
* le operazioni di ''[[Casting (programmazione)|casting]]'', che consentono di forzare l'interpretazione di un qualunque valore secondo un qualunque tipo (anche un tipo diverso da quello a cui il valore è stato precedentemente associato);