Un sistema dei tipi per un linguaggio di programmazione è un insieme di regole che consentono di dare un tipo ad espressioni (variabili) e comandi (funzioni)
Un linguaggio si dice tipato se per esso `e definito un tale sistema; altrimenti si dice non tipato.
Un linguaggio si dice fortemente tipato se il tipo di tutte le variabili `e determinato a tempo di compilazione, altrimenti si dice dinamicamente tipato.
In un linguaggio fortemente tipato lo spazio di memoria richiesto per contenere il valore di ciascuna variabile durante l’esecuzione `e completamente determinato a tempo di compilazione.