Explicamos qué es, qué tipos de tipificación existen y en qué influye.
Si has leído algo sobre lenguajes de programación, seguramente te habrás encontrado con la mención de la tipificación. ¿Qué es y qué debes saber al respecto cuando eliges un lenguaje de programación?
La tipificación es la forma en que un lenguaje reconoce los tipos de variables. Define si necesitas escribir el tipo o si el lenguaje lo «entiende» por sí mismo, y qué tan libremente puedes trabajar con los tipos: por ejemplo, si puedes cambiarlos o no.
¿Y qué son los tipos?
En una variable puedes guardar información, y el tipo de variable describe qué información está guardada en ella y qué puedes hacer con ella.
Estos son algunos tipos comunes:
- integer: número entero;
- flow: número con parte decimal;
- string: cadena de texto;
- bool: verdadero/falso.
Los tipos son diferentes y varían ligeramente en distintos lenguajes.
¿Por qué necesitas saber sobre la tipificación?
La tipificación depende de cómo trabajas con el lenguaje y cómo se comporta. Si sabes qué ventajas o problemas presentan los diferentes tipos de tipificación, te resultará más fácil elegir un lenguaje.
¿Qué tipos de tipificación existen?
Débil y fuerte
Si un lenguaje tiene tipificación fuerte (también llamada estricta), significa que requiere que los desarrolladores sigan estrictamente las reglas de trabajo con los tipos: si defines algo como un número entero, debes trabajar con él como un número entero.
Los lenguajes con tipificación débil son más «tolerantes»: si decides sumar un número a un texto, no se quejarán, sino que intentarán hacer lo que pides. Sin embargo, el resultado puede no ser el que esperabas.
Ejemplo
En JavaScript, un lenguaje con tipificación débil, puedes sumar una cadena a un número, por ejemplo así:
2 + "1"
Y obtendrás la cadena «21«.
En Java, esto no es posible: aparecerá un error.
Estática y dinámica
La tipificación estática significa que los tipos se definen en la etapa de compilación. Es decir, los errores en los tipos serán visibles antes de que se ejecute el programa.
En los lenguajes con tipificación dinámica, los tipos se definen durante la ejecución del programa.
Así, en un lenguaje con tipificación dinámica, una misma variable puede tener diferentes tipos en diferentes partes del programa, mientras que en un lenguaje con tipificación estática, si le asignas a una variable el tipo string, solo tendrá el tipo string.
Por ejemplo, en Python (tipificación dinámica) puedes hacer lo siguiente:
x = 5
Y luego:
x = "text"
Y el lenguaje no se quejará. En Java (tipificación estática), esto no es posible.
Explícita e implícita
La tipificación también se divide en explícita e implícita. Cuando la tipificación es implícita, el tipo se define automáticamente cuando se escribe información en la variable.
Por ejemplo, si en Python escribes:
b = 8
Python lee que has escrito un número entero en la variable b y define b como integer (int).
La tipificación explícita significa que el tipo de variable está escrito. Por ejemplo, en C, una variable se escribe así:
int b = 8;
La división de la tipificación en explícita e implícita no es tan importante: en los lenguajes con tipificación estática, casi siempre es explícita, mientras que en los lenguajes con tipificación dinámica, es implícita.
¿Cómo influye la tipificación en el trabajo con el lenguaje?
La tipificación fuerte limita un poco la creatividad, pero es más predecible. La tipificación débil da más libertad, pero hay que ser más cuidadoso. Sin embargo, con la experiencia, queda claro cómo se comporta un lenguaje específico, y es más fácil evitar sorpresas desagradables.
La tipificación estática añade dificultades al escribir código: hay que escribir mucho manualmente. La tipificación dinámica proporciona una mayor simplicidad en la escritura y una mejor legibilidad del código.
Un programa escrito en un lenguaje con tipificación estática suele funcionar más rápido que un programa en un lenguaje con tipificación dinámica. En este último caso, los tipos se comprueban durante el proceso, lo que ralentiza el trabajo.
Es importante tener en cuenta que la tipificación no es el único factor que influye en la velocidad. No se puede decir que todos los lenguajes con tipificación estática sean más rápidos que los lenguajes con tipificación dinámica.
¿Qué tipificación tienen algunos lenguajes?
Por último, la tipificación de algunos lenguajes populares: