Anar al contingut

Tipado fort

De L'Enciclopèdia, la wikipedia en valencià

Un llenguage de programació és fortament tipado si no es permeten violacions dels tipos de senyes, és dir, donat el valor d'una variable d'un tipo concret, no es pot usar com si fòra d'un atre tipo distint a menos que es faça una conversió. No hi ha una única definició d'este terme. Un llenguage que es diu que no està tipado es referix a que no està fortament tipado.

Explicació detallada

[editar | editar còdic]

Els llenguages de programació solen contar en un sublenguaje de tipos per a declarar variables. Este sublenguaje instruïx al compilador respecte al tipo de valors que pot adoptar cada variable. Per eixemple:

int X;

en el Llenguage de programació C significa "la variable X adopta valors numèrics sancers".

Estos tipos també es declaren per a tots els arguments de procediments o subrutinas. Per eixemple:

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

Este procediment accepta un número en menge flotant (número real) i li sumixca 1,5.

En els llenguages fortament tipados, el compilador no permet que s'use una variable com a paràmetro d'un procediment si els seus tipos no coincidixen exactament. En l'eixemple anterior, no seria possible invocar la subrutina en la variable "X" si esta anara d'un tipo incompatible en float. És dir, si X anara de tipo sancer, el compilador produïx una conversió de int a float, i permet la cridada typecasting. En canvi si anara d'un atre tipo, com a busca a char(char *), per al que no existix una conversió implícita a float, el compilador detectarà el conflicte i produirà un error.

Conversió de tipos (typecasting)

[editar | editar còdic]

Quan un llenguage és fortament tipado, el programador deu explícitament convertir un tipo de senyes en un atre. Açò es coneix com a conversió o molejat de tipos (typecasting) i també deu estar soportat pel compilador. Per eixemple:

subrutina((float)X)

Indica al compilador que no estem cometent un error i realment desigem convertir la variable "X" (sancera) en una variable de menge flotant per a invocar a "subrutina".

Cada llenguage de programació pot ser més o menys tipado segons en que casos exigix el typecasting. Per eixemple, la conversió automàtica entre sancer i menge flotant podria ser admesa, pero no al contrari. Si no és factible la conversió entre un tipo o un atre, el compilador també emetrà un error de compilació al moment d'eixecutar-ho.

Confusió comuna del concepte

[editar | editar còdic]

És habitual que el llenguage de programació C es considere fortament tipado, la qual cosa és relativament incorrecte. Els compiladors de C nos avisen quan els tipos no es corresponen, lo que pot ser fàcilment resolt realisant un cast de la variable en qüestió. No obstant, prenent de nou la definició, un llenguage és fortament tipado "si no es permeten violacions dels tipos de senyes", pero en el cas de C sí que es permet açò, ya que en efectuar un cast no estem davant una conversió de tipo (no hi ha variació alguna de la representació de la senya en memòria) sino davant un "mensage" al compilador.

En la programació a baix nivell de C són comunes violacions de tipo en les que el programador deu ser especialment cuidadós.

Un eixemple de llenguage fortament tipado, com és Python, no permet violació de tipos. Açò es pot vore tractant d'eixecutar una suma entre un string i un int.