Présentation

Article

1 - QUELQUES DÉFINITIONS

2 - SÛRETÉ D’EXÉCUTION

  • 2.1 - Erreurs d’exécution
  • 2.2 - Types de bases
  • 2.3 - Typage statique et dynamique
  • 2.4 - Données structurées
  • 2.5 - Fonctions, procédures et méthodes

3 - ABSTRACTION

  • 3.1 - Types abstraits
  • 3.2 - Respecter l’intégrité des données
  • 3.3 - Préserver l’abstraction
  • 3.4 - Vérifier la correction de l’implémentation vis-à-vis de la spécification

4 - TYPAGE ET POLYMORPHISME

  • 4.1 - Classification
  • 4.2 - Polymorphisme paramétrique (ou généricité)
  • 4.3 - Polymorphisme de surcharge
  • 4.4 - Polymorphisme par sous-typage

5 - AUTRES SYSTÈMES DE TYPES

6 - CONCLUSION

Article de référence | Réf : H3320 v1

Autres systèmes de types
Typage des langages de programmation

Auteur(s) : Emmanuel CHAILLOUX, Romain DEMANGEON, Michel MAUNY

Date de publication : 10 mai 2018

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais En anglais

RÉ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’article

ABSTRACT

Typing in programming language

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)

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 ifthenelse), ou être résultats de fonctions à valeurs booléennes.

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

KEYWORDS

Computer   |   programming   |   type checking   |   language

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-h3320


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

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais En anglais

5. Autres systèmes de types

Le typage dynamique, en vérifiant que les arguments passés à une fonction sont (de types) acceptables, garantit que les opérations exécutées le sont sur des données correctes, du point de vue des types. Pour cela, des tests sur les données transmises sont effectués avant l’appel à une fonction ou bien directement dans son code. Si l’un de ces tests de conformité de type échoue, cet échec est signalé soit en transmettant une valeur spécifique à l’appelant, soit en déclenchant une exception à cet endroit du programme. On obtient donc une garantie de fiabilité logicielle indiquant qu’il n’y aura pas de calculs sur des données non conformes à ce qui est attendu.

Le typage statique élimine les tests de typage à l’exécution en analysant le code source du programme pour vérifier qu’il est conforme au système de types du langage dans lequel ce programme est écrit. Si ce n’est pas le cas, le programme ne sera pas compilé et ne pourra donc pas être exécuté. Si c’est le cas, le compilateur peut alors traduire le programme source vers du code machine, en tirant parti de la correction de son système de types pour, en particulier, ne pas effectuer de tests de types comme ceux vérifiant la conformité des arguments passés à une fonction.

Dans ce cadre, un langage typé statiquement est dit fortement typé si le compilateur n’accepte aucune erreur de typage. En cas de succès, la correction du typage garantissant que le code engendré sera dépourvu d’erreur de type, le compilateur n’introduira aucun test de type dynamique.

Tant dans les langages typés dynamiquement que dans ceux qui sont typés statiquement, il peut être demandé au programmeur d’écrire des informations pour la vérification du typage. Pour les premiers, il lui est demandé d’écrire explicitement des tests de type qui vérifient la conformité des valeurs manipulées. Pour les seconds, le programmeur indique les types des variables et paramètres à l’endroit de leur déclaration. Néanmoins, dans un système de types riche, par exemple avec des types paramétrés et fonctionnels, il peut devenir pénible de devoir systématiquement fournir ces annotations. Pour cela, le compilateur peut décharger le programmeur de tout ou partie de ces annotations en déterminant automatiquement un type compatible avec le source du programme et son système de types. On parle alors d’inférence de types.

D’autres langages à...

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

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

ABONNEZ-VOUS

Lecture en cours
Autres systèmes de types
Sommaire
Sommaire

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).

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

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

ABONNEZ-VOUS