Présentation
En anglaisRÉSUMÉ
Le typage dans les langages de programmation garantit l’absence de calculs erronés qui seraient dus à des opérations manipulant des données non-conformes. Cette vérification peut s’effectuer à l’exécution (typage dynamique) ou à la compilation (typage statique) et accroît la sûreté d’exécution des programmes. Le typage permet aussi de s’abstraire de la représentation des données pour faciliter la composition des éléments d’un programme tout en apportant un bon niveau de flexibilité grâce aux différentes classes de polymorphisme (paramétrique, ad hoc, sous-typage). Chaque langage de programmation possède sa propre discipline de typage afin d’assurer sûreté, abstraction et flexibilité des programmes.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleABSTRACT
Typing in programming languages rules out faults in computations due to operations using inadequate data. This verification may take place either at runtime (dynamic typing) or during compilation (static typing) and increases program security. Through abstraction, typing makes it possible to hide some implementation details in order to smooth the composition of different components of a program while allowing some flexibility through different kinds of polymorphism (parametric, ad hoc, subtyping). Each programming language has its own typing discipline that aims to ensure safety, abstraction, and flexibility of programs.
Auteur(s)
-
Emmanuel CHAILLOUX : Professeur, Sorbonne Université
-
Romain DEMANGEON : Maître de conférences, Sorbonne Université
-
Michel MAUNY : Directeur de recherche, Inria
INTRODUCTION
En programmation, un type de données ou, plus simplement, un type, est un ensemble de données partageant des propriétés et des opérations. Par exemple, dans le langage C, le type int des entiers contient les nombres positifs ou négatifs représentables sur un nombre fixe de bits, qui peut dépendre de l’architecture du processeur (souvent 32 ou 64). Ces entiers peuvent être arguments ou résultats d’opérations arithmétiques. Le langage OCaml fournit un type bool ne contenant que les deux valeurs de vérité true et false, qui peuvent être testées (par une construction conditionnelle if−then−else), ou être résultats de fonctions à valeurs booléennes.
MOTS-CLÉS
KEYWORDS
Computer | programming | type checking | language
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
1. Quelques définitions
Les types peuvent être classés en deux catégories. Les types dits primitifs sont ceux de données de base directement fournies par la machine, comme les entiers ou les booléens mentionnés ci-dessus. Les types composés, quant à eux, sont construits à partir d’un ou plusieurs types. Les exemples les plus classiques de types composés sont les types de conteneurs, tels les tableaux ou les listes, mais les produits (par exemple, les enregistrements) et les unions de plusieurs types sont aussi des types composés. Les structures de C sont des exemples de types produits, et les types algébriques, que le langage OCaml permet de définir, correspondent à des unions discriminées. Des éléments comme les objets peuvent être, eux aussi, vus comme appartenant à des types composés, en classant dans un même type les objets exposant les mêmes méthodes. L’appartenance à un type n’est souvent pas exclusive, surtout lorsqu’il est question d’objets : si on considère que disposer d’au moins un ensemble précis de méthodes vaut appartenance à un type T d’objets, alors le type S des objets dotés d’un sur-ensemble de ces méthodes sera un sous-type de T. En effet, tous les objets de S sont aussi objets de T, puisqu’ils sont dotés des méthodes qui leur permettent d’appartenir à T. L’inclusion inverse n’est bien sûr pas vraie, puisque certains des objets de T ne disposent pas de toutes les méthodes nécessaires à l’appartenance à S. Ces propriétés d’inclusions relèvent du sous-typage.
Un type peut ou non révéler la structure de ses éléments : lorsque ce n’est pas le cas, on dit que le type est abstrait. Un type abstrait peut contenir des éléments dont certains invariants doivent être préservés ou des données dont la représentation doit rester privée au compilateur ou à la bibliothèque d’exécution du langage de programmation.
Par exemple, des structures de données représentant des ensembles ne doivent pas contenir d’éléments dupliqués et chacun des nœuds d’un arbre binaire de recherche doit dichotomiser les éléments qui en sont issus.
Dans certains langages de programmation, les types des fonctions sont des types composés qui doivent rester abstraits, notamment pour que le compilateur en garde une liberté...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Quelques définitions
BIBLIOGRAPHIE
-
(1) - MILNER (R.) - A theory of type polymorphism in programming. - J. Comput. Syst. Sci (1978).
-
(2) - WRIGHT (A.K.) - Polymorphism for imperative languages without imperative types. - Technical Report TR93-200, Rice University Dept. of Computer Science (1993).
-
(3) - PIERCE (B.) - Types and Programming Languages MIT Press. - (2002).
DANS NOS BASES DOCUMENTAIRES
ANNEXES
-
Type abstrait (Wikipedia) : https://fr.wikipedia.org/wiki/Type_abstrait
-
Polymorphisme (Wikipedia) : https://fr.wikipedia.org/wiki/Polymorphisme_(informatique)
-
Sûreté du typage (Wikipedia en anglais) : https://en.wikipedia.org/wiki/Type_safety
-
Langages des exemples :
-
OCaml : https://ocaml.org/
-
Swift : https://swift.org/
-
Java : https://www.java.com/
-
JavaScript : https://fr.wikipedia.org/wiki/JavaScript
-
C (Wikipedia) : https://fr.wikipedia.org/wiki/C_(langage)
-
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive