El propósito principal de los tipos no es la representación en memoria. (A menos que estés trabajando en C, pobre alma). En cambio, el propósito principal es la abstracción ¹.
Tenemos muchos tipos porque hay muchas cosas diferentes en el mundo .
Escribir un programa de computadora es, a un alto nivel, diseñar un modelo formal. Lo que está modelando depende de para qué sirve su programa, por supuesto: a veces modela cosas directamente del mundo real, y a veces (con bastante frecuencia, en realidad) modela conceptos “meta” diseñados para ayudar a armar el software.
- ¿Cuál es el mejor software para la documentación?
- ¿Puedes decir qué tan bueno es un programador dependiendo de su habilidad para hablar?
- Si eres un ingeniero de software, después de trabajar durante un tiempo en una empresa, ¿pides un aumento / promoción o simplemente esperas hasta que te lo den?
- ¿Cómo es ser ingeniero de software después de especializarse en ingeniería eléctrica? ¿Alguna ventaja del conocimiento de ECE?
- ¿Qué software puedo usar para programar?
En cualquier caso, los tipos son la columna vertebral de su modelo . Son las entidades que componen el espacio que define; el resto de su código solo define cómo se comportan e interactúan los tipos. En un sentido muy real, son el alma de su programa.
Esto significa que el propósito principal de los tipos es ayudarlo a pensar en su código . Claro, también ayudan a la computadora a optimizar y ejecutar su código, pero esto es solo una consecuencia de ayudarlo. Los tipos lo ayudan a expresar sus intenciones con mayor precisión, lo que permite que la computadora trabaje más por usted.
Entonces: tenemos muchos tipos porque eso es lo que usamos para construir un modelo del mundo o cualquier otra cosa relevante para nuestro programa.
¹ La abstracción es la esencia misma de la informática. Incluso iría tan lejos como definir CS como el estudio de abstracciones, excepto que tendría que enfrentarse con las matemáticas por el título. Creo que es mucho más apropiado que pensar en CS como el estudio de programación o algoritmos o computadoras …