È comunemente accettato che i generici Java abbiano fallito in alcuni modi importanti. La combinazione di caratteri jolly e limiti ha portato a un codice seriamente illeggibile.
Tuttavia, quando guardo altre lingue, non riesco davvero a trovare un sistema di tipo generico di cui i programmatori siano soddisfatti.
Se prendiamo i seguenti obiettivi di progettazione di un sistema di questo genere:
- Produce sempre dichiarazioni di tipo di facile lettura
- Facile da imparare (non c'è bisogno di rispolverare la covarianza, la contravarianza, ecc.)
- massimizza il numero di errori in fase di compilazione
C'è qualche linguaggio che ha ragione? Se io google, l'unica cosa che vedo sono i reclami su come il sistema di tipi fa schifo nel linguaggio X. Questo tipo di complessità è inerente alla tipizzazione generica? Dovremmo semplicemente rinunciare a provare a verificare la sicurezza del tipo al 100% al momento della compilazione?
La mia domanda principale è quale sia il linguaggio che ha "capito bene" il meglio rispetto a questi tre obiettivi. Mi rendo conto che questo è soggettivo, ma finora non riesco nemmeno a trovare una lingua in cui non tutti i programmatori sono d'accordo sul fatto che il sistema di tipo generico sia un disastro.
Addendum: come notato, la combinazione di sottotipizzazione / ereditarietà e generici è ciò che crea la complessità, quindi sono davvero alla ricerca di un linguaggio che combini entrambi ed eviti l'esplosione della complessità.