Mi chiedevo perché alcune lingue scelgano di implementare tipi numerici (booleani, interi, float, caratteri ecc.) come classi / oggetti (ad esempio Kotlin) e alcuni come tipi primitivi (ad esempio Java). Sto prendendo in considerazione specificamente le lingue interpretate piuttosto che le lingue compilate.
Di seguito sono riportate le differenze che sono riuscito a trovare:
Come classe:
-
Il tipo potrebbe essere esteso, in modo che le nuove classi possano essere trattate anche come tipi numerici (vale a dire applicabili agli operatori aritmetici).
-
Nessuna necessità per le classi wrapper, in quanto la funzionalità rilevante del tipo potrebbe essere incapsulata all'interno della classe del tipo numerico stesso.
Come primitivo:
- Meno utilizzo della memoria, in quanto verrà memorizzato solo il valore del primitivo, piuttosto che la massa aggiuntiva necessaria per un oggetto.
Quali altri motivi potrebbe essere?
Modifica: non è un duplicato di questa domanda , poiché questa domanda riguarda esclusivamente il linguaggio design, piuttosto che ciò che dovrebbe essere scelto per uno specifico problema pratico e reale.