Tipado fuerte

Un lenguaje de programación es fuertemente tipado si no se permiten violaciones de los tipos de datos, es decir, dado el valor de una variable de un tipo concreto, no se puede usar como si fuera de otro tipo distinto a menos que se haga una conversión. No hay una única definición de este término. Un lenguaje que se dice que no está tipado se refiere a que no está fuertemente tipado.

Explicación detallada

Los lenguajes de programación suelen contar con un sublenguaje de tipos para declarar variables. Este sublenguaje instruye al compilador respecto al tipo de valores que puede adoptar cada variable. Por ejemplo:

int X;

en el Lenguaje de programación C significa "la variable X adopta valores numéricos enteros".

Estos tipos también se declaran para todos los argumentos de procedimientos o subrutinas. Por ejemplo:

float subrutina(float Parametro)
{
   return Parametro + 1.5;
}

Este procedimiento acepta un número en coma flotante (número real) y le suma 1,5.

En los lenguajes fuertemente tipados, el compilador no permite que se use una variable como parámetro de un procedimiento si sus tipos no coinciden exactamente. En el ejemplo anterior, no sería posible invocar la subrutina con la variable "X" si esta fuese de un tipo incompatible con float. Es decir, si X fuese de tipo entero, el compilador produce una conversión de int a float, y permite la llamada typecasting. En cambio si fuese de otro tipo, como puntero a char(char *), para el que no existe una conversión implícita a float, el compilador detectará el conflicto y producirá un error.

Conversión de tipos (typecasting)

Cuando un lenguaje es fuertemente tipado, el programador debe explícitamente convertir un tipo de datos en otro. Esto se conoce como conversión o moldeado de tipos (typecasting) y también debe estar soportado por el compilador. Por ejemplo:

subrutina((float)X)

Indica al compilador que no estamos cometiendo un error y realmente deseamos convertir la variable "X" (entera) en una variable de coma flotante para invocar a "subrutina".

Cada lenguaje de programación puede ser más o menos tipado según en que casos exige el typecasting. Por ejemplo, la conversión automática entre entero y coma flotante podría ser admitida, pero no al contrario. Si no es factible la conversión entre un tipo u otro, el compilador también emitirá un error de compilación al momento de ejecutarlo.

Other Languages