En un lenguaje de programación, los tipos de dato sirven:
- A nivel de diseño, como documentación y soporte de la organización.
- A nivel de programa, para asegurar operaciones correctas.
- A nivel de implementación, para el acceso (y tamaño) de memoria.
Control de Tipos
- Estático: se controla durante la compilación. El programa resultante es rápido de ejecutar, escalable, robusto, y mejor documentado.
- Dinámico: se controla durante la ejecución. Esto resulta en una programación más rápida, aunque genera un programa más lento y que ocupa más memoria.
Equivalencia de Tipos
El lenguaje debe validar si hay equivalencia para una operación . La equivalencia de tipos puede ser:
- Estructural: . Esto se vuelve muy largo para tipos complejos, lo cual es lento.
- De Nombres: . Esto es una equivalencia más segura.
Un tipo es compatible con un tipo si un valor de tipo es permitido en cualquier contexto en el cual un valor de tipo sería admisible. El Principio de Completitud de Tipos dice que las operaciones realizables por un tipo no deberían ser arbitrariamente restringidas al mismo (para no reducir la potencialidad).