Le typage fort / faible et le typage statique / dynamique sont orthogonaux.
Fort faible est de savoir si le type de valeur importe, fonctionnellement parlant. Dans une langue faiblement typée, vous pouvez prendre deux chaînes qui se trouvent être remplies de chiffres et effectuer une addition entière sur celles-ci; dans une langue fortement typée, il s'agit d'une erreur (sauf si vous convertissez ou convertissez d'abord les valeurs en types corrects). La frappe forte / faible n'est pas une chose en noir et blanc; la plupart des langues ne sont ni 100% strictes ni 100% faibles.
Le typage statique / dynamique consiste à savoir si les types se lient à des valeurs ou à des identificateurs. Dans un langage à typage dynamique, vous pouvez attribuer n'importe quelle valeur à n'importe quelle variable, quel que soit le type; le typage statique définit un type pour chaque identificateur, et l'affectation à partir d'un type différent est soit une erreur, soit une conversion implicite. Certaines langues adoptent une approche hybride, permettant des types déclarés statiquement ainsi que des identifiants non typés («variante»). Il y a aussi l'inférence de type, un mécanisme où le typage statique est possible sans déclarer explicitement le type de tout, en demandant au compilateur de comprendre les types (Haskell l'utilise intensivement, C # l'expose à travers levar
mot clé).
Une programmation dynamique faible permet une approche pragmatique; la langue ne vous gêne pas la plupart du temps, mais elle n'intervient pas non plus lorsque vous vous tirez une balle dans le pied. Un typage statique fort, en revanche, pousse le programmeur à exprimer explicitement certaines attentes concernant les valeurs dans le code, d'une manière qui permet au compilateur ou à l'interpréteur de détecter une classe d'erreurs. Avec un bon système de type, un programmeur peut définir exactement ce qui peut et ne peut pas être fait pour une valeur, et si, par accident, quelqu'un essaie quelque chose de indésirable, le système de type peut souvent l'empêcher et montrer exactement où et pourquoi les choses tournent mal.