Le typage est une analyse
qui cherche à detecter les incohérences
de types dans les programmes, par exemple: un opérateur qui est
appliqué à des objets pour lesquels il n'est pas défini,
l'utilisation d'un entier comme un pointeur, etc.
Des telles incohérences peuvent occasionner
une erreur fatale (avec l'arrêt du
programme), ou un résultat incorrect.
Pour réaliser le typage, les objets manipulés
par les programmes sont regroupés
en catégories distinctes: les types. On simule ensuite
l'exécution du programme, mais en tenant compte uniquement des types
obtenus à chaque étape de la simulation. Cette simulation est faite
en suivant un ensemble de règles appelées règles de typage.
Le typage est divisé en deux catégories selon qu'il est
réalisé pendant l'exécution ou avant celle-ci.
Dans le premier cas, on parle de typage dynamique.
Les tests sur les types sont insérés dans le code compilé
et sont ainsi réalisés pendant l'execution du programme,
ce qui diminue considérablement l'éfficacité du code compilé.
Si une erreur de typage est detectée,
celle-ci est signalée et l'execution du programme est arretée.
Le typage dit statique
est fait entiérement pendant la compilation, et le code
compilé ne contient plus aucun test sur les types, leur cohérence
ayant ete vérifiée avant la traduction en code machine.
Cette séparation entre typage et éxecution est possible
grâce à une propriété très importante du typage statique:
les programmes acceptés par le typeur
sont garantis libres d'erreurs de types. Une conséquence est
que le typage statique donne lieu
à du code compilé plus efficace que celui produit par le
typage dynamique.
L'enjeu du typage est donc celui de détecter les incohérences de types
le plus tôt possible avant l'éxecution: idéalement,
au moment
de la compilation.
Pour le programmeur, le typage est une aide mais aussi une contrainte,
car les règles de typage restreignent la classe des programmes qui
sont acceptés par le compilateur. Donc, la reussite dans la
programmation dépend en particulier de la bonne compréhension des
règles de typage associées au langage de son choix.