Una cosa che mi è venuta in mente l'altro giorno, sono tipi specifici ancora necessari o un retaggio che ci sta trattenendo. Quello che voglio dire è: abbiamo davvero bisogno di short, int, long, bigint ecc ecc.
Capisco il ragionamento, le variabili / gli oggetti sono tenuti in memoria, la memoria deve essere allocata e quindi dobbiamo sapere quanto può essere grande una variabile. Ma in realtà, un moderno linguaggio di programmazione non dovrebbe essere in grado di gestire "tipi adattivi", cioè se qualcosa viene allocato sempre e solo nell'intervallo di shortint usa meno byte, e se qualcosa viene improvvisamente assegnato un numero molto grande la memoria viene allocata per quel particolare caso.
Float, real e double sono un po 'più complicati poiché il tipo dipende dalla precisione di cui hai bisogno. Le stringhe dovrebbero tuttavia essere in grado di occupare meno memoria in molti casi (in .Net) in cui viene utilizzato principalmente ASCII, ma le stringhe occupano sempre il doppio della memoria a causa della codifica Unicode.
Un argomento per tipi specifici potrebbe essere che fa parte della specifica, ad esempio una variabile non dovrebbe essere in grado di essere più grande di un certo valore, quindi la impostiamo su shortint. Ma perché non avere vincoli di tipo invece? Sarebbe molto più flessibile e potente essere in grado di impostare intervalli e valori consentiti su variabili (e proprietà).
Mi rendo conto dell'immenso problema nel rinnovare l'architettura dei tipi poiché è così strettamente integrato con l'hardware sottostante e cose come la serializzazione potrebbero diventare davvero difficili. Ma dal punto di vista della programmazione dovrebbe essere fantastico no?
type hour is range 0 .. 23;