Aller au contenu

Type (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Présentation des principauxtypes de données.

Enprogrammation informatique,untype de donnée,ou simplement untype,définit la nature des valeurs que peut prendre unedonnée,ainsi que lesopérateursqui peuvent lui être appliqués.

Types de données[modifier|modifier le code]

Types prédéfinis[modifier|modifier le code]

La plupart des langages de programmation de haut niveau offrent des types de base correspondant aux données qui peuvent être traitées directement — à savoir: sans conversion ou formatage préalable — par leprocesseur.Ces types de base sont souvent:

  • Typebooléen:valeurs vrai ou faux — ou respectivement 1 ou 0;
  • Type entiersigné ou non signé: valeurs codées sur 8bits,16 bits, 32 bits voire 64 bits.
Lescaractèressont parfois assimilés à des entiers codés sur 8 ou 16 bits (exemples:CetJava);

Les langages permettant unaccès direct à la mémoiredu système offrent par ailleurs le typepointeur,et un type octet.

Beaucoup proposent également un type prédéfini,string,pour leschaînes de caractères. Les langages de haut niveau peuvent également supporter nativement des types correspondant à d'autresstructures de données.

Types paramétrés[modifier|modifier le code]

Par exemple la déclaration despointeursou destableauxen langage C nécessite de préciser le type qui doit servir de base aux données manipulées. Laprogrammation génériqueétend cette pratique pour permettre à l'utilisateur de créer ses propres types paramétrés.

Types énumérés[modifier|modifier le code]

Untype énuméréest un type pour lequel le programmeur spécifie lui-même la liste des valeurs possibles. Le code suivant illustre la définition d'un nouveau typecouleuret des trois valeurs possibles (rouge, bleu et vert), suivie de la déclaration et initialisation d'une variablecde ce type:

enumcouleur{rouge,vert,bleu};
couleurc=vert;

Types composés[modifier|modifier le code]

Les types composés (structenC,recordenPascal) permettent de grouper plusieurs champs de types distincts dans une même variable (qui contient alors des « sous-variables »).

Enprogrammation orientée objet,on nommeclasseun type composé associé à du code spécifique — la définition des méthodes de la classe — propre à la manipulation de variables de ce type.

Types hiérarchiques[modifier|modifier le code]

Laprogrammation orientée objetétend le paradigme précédent en organisant hiérarchiquement les classes de telle manière qu'une variable d'une sous-classe puisse être utilisée de manière transparente à la place de n'importe quelle classe située à un niveau supérieur dans la hiérarchie définie.

Types opaques[modifier|modifier le code]

Un type opaque est un type incomplètement défini et/ou dont la nature est masquée. Le développeur ne peut ni en examiner le contenu, ni le modifier, et doit simplement le stocker et le transmettre. À cet effet, seule la taille d'un type opaque est réellement connue.

Les données opaques sont par exemple deshandles(terminologieWindows), desdescripteurs de fichier(terminologieUnix), desclés,des pointeurs vers des structures masquées (ex.:FILE*de labibliothèque standard du C), etc. La seule notion cruciale, c'est qu'une variable opaque est fournie via une fonction dédiée de création (de typeconstructeur), transmise telle quelle aux fonctions utilisatrices (souvent via unpassage par référence), et enfin détruite via une fonction de libération (de typedestructeur).

La possibilité – ou non – d'avoir des types opaques est totalement dépendante du langage de programmation utilisé.

Typage[modifier|modifier le code]

Typage statique et typage dynamique[modifier|modifier le code]

On parle detypage statiquequand la majorité des vérifications de type sont effectuées au moment de lacompilation.

Au contraire, on parle detypage dynamiquequand ces vérifications sont effectuées pendant l'exécution.

Typage explicite et typage implicite[modifier|modifier le code]

Avec un typage explicite, c'est à l'utilisateur d'indiquer lui-même les types qu'il utilise, par exemple lors des déclarations de variables ou de fonctions.

Par exemple, enlangage C,le typage est explicite:

inti=0;// cette déclaration indique explicitement que
// la variable i est de type entier (integer en anglais)

Au contraire, avec un système de typage implicite, le développeur laisse aucompilateurou auruntimele soin de déterminer tout seul les types de données utilisées, par exemple parinférence.

Par exemple, enObjective Caml,le typage est implicite:

leti=0;;(* le compilateur détermine automatiquement que
la variable i est de type entier (integer en anglais) *)

Typage fort et typage faible[modifier|modifier le code]

Lasûreté du typageest destinée à prévenir les erreurs de type, à savoir: l'emploi d'une variable dont le format est incompatible. La définition d'un langagefortement typéest assez floue:

  • soit elle est à rapprocher de celle de langage àtypage statique:le compilateur assure la détection au plus tôt des erreurs de type;
  • soit on juge de la force du typage d'un langage selon lesconversions de typeimplicites qu'il autorise.

Références[modifier|modifier le code]

En français[modifier|modifier le code]

  • Emmanuel Chailloux, Pascal Manoury et Bruno Pagano,Développement d'applications avec Objective Caml,Éditions O'Reilly, Paris, 2000
  • Sylvain Conchon et Jean-Christophe Filliâtre,Apprendre à programmer avec OCaml.Algorithmes et structures de données. Éditions Eyrolles, 2014

En anglais[modifier|modifier le code]

Voir aussi[modifier|modifier le code]