- Typage faible
-
Typage fort
Article principal : Typage.En informatique, un langage de programmation est dit fortement typé lorsqu'il garantit que les types de données employés décrivent correctement les données manipulées. Par opposition, un langage sans typage fort est dit faiblement typé.
Depuis son invention, le terme de typage fort a été employé avec de nombreux sens contradictoires, ce qui lui a enlevé presque toute signification. La liste qui suit rassemble quelques affirmations possibles sur le typage fort, avec des exemples de langages fortement typés et respectant le critère et des contre-exemples de langages tout aussi fortement typés mais ne respectant pas le critère.
Conditions
Un langage est fortement typé si :
- le type de donnée est associé au nom de la variable, plutôt qu'à sa valeur. Si le type est attaché à la valeur, le langage est faiblement typé. Exemple : Java. Contre-exemple : OCaml, qui est généralement considéré comme encore plus fortement typé que Java.
- le compilateur est capable de déceler des erreurs de typage. Si les erreurs de typage ne sont reconnues qu'à l'exécution, le langage est faiblement typé. Exemple : OCaml. Contre-exemple : Scheme.
- la compilation ou l'exécution peuvent détecter des erreurs de typage. Si ces erreurs ne sont jamais reconnues, le langage est faiblement typé.
- les conversions implicites de types sont formellement interdites. Si de telles conversions sont possibles, le langage est faiblement typé. Exemple : OCaml. Contre-exemple : Haskell, qui est généralement considéré comme encore plus fortement typé que OCaml.
- les conversions entre types doivent être explicitement décrites. Si des conversions implicites sont utilisées, le langage est faiblement typé. Exemple : OCaml.
- aucun mécanisme du langage ne permet de passer outre le système de typage. Si ces mécanismes existent, comme le transtypage (appelé cast en anglais) en langage C, le langage est faiblement typé. Exemple : Haskell.
- il possède un typage complet, alliant des types simples et des types composés. S’il n'a que quelques types, ou seulement des types simples ou scalaires, le langage est faiblement typé.
- le type de ses données est fixe et ne peut varier pendant la durée de la vie de l'objet. Si le type d'une donnée peut changer, le langage est faiblement typé. On appelle cela le typage dynamique.
- le système de typage fournit de fortes garanties sur le comportement à l'exécution du programme avant cette exécution. Si les garanties fournies par le système de typage ne sont pas fortes, ce langage est au mieux faiblement typé.
Quelques unes de ces définitions sont contradictoires.
Parce qu'il n'y a pas de définition claire de ce qui est fortement typé ou non, il est possible de trouver des instructions dans un langage qui le rendent tour à tour fortement typé ou faiblement typé. Ainsi dans les définitions 1, 7 et 8, le langage C est fortement typé, tandis que selon les définitions 4, 5, et 6, il est faiblement typé — en laissant le débat ouvert pour les points 2 et 3 puisque C permet des vérifications pour les types composés, mais pas pour les listes ou les types scalaires. Il est donc facile de trouver des gens convaincus que le 'C' est fortement typé, et tout aussi facile d'en trouver qui affirmeront qu'il est faiblement typé.
Ainsi, un expert en langages de programmation raconte :
« J'ai passé quelques semaines à essayer de clarifier les terminologies "fortement typé", "statiquement typé", "sûr", etc., et j'ai trouvé cela extraordinairement difficile... L'utilisation de ces termes est si diverse qu'elle les rend presque inutiles. »— Benjamin C. Pierce
- Portail de la programmation informatique
Catégorie : Théorie des types
Wikimedia Foundation. 2010.