Typage dynamique

Infos
Tous les langages de programmation permettent, directement ou indirectement, de manipuler des valeurs. Généralement, c'est par l'entremise de variables, qui sont une association (on dit aussi une liaison) entre un symbole et une valeur. Par exemple, en langage C++, l'extrait de programme suivant : ... int a; a = 5; ... déclare une variable dénotée 'a', de type entier, et y affecte la valeur 5. C++ est un langage à typage statique. En Common Lisp, on écrira : (let ((a 5)) ...) Ici, l
Typage dynamique

Tous les langages de programmation permettent, directement ou indirectement, de manipuler des valeurs. Généralement, c'est par l'entremise de variables, qui sont une association (on dit aussi une liaison) entre un symbole et une valeur. Par exemple, en langage C++, l'extrait de programme suivant : ... int a; a = 5; ... déclare une variable dénotée 'a', de type entier, et y affecte la valeur 5. C++ est un langage à typage statique. En Common Lisp, on écrira : (let ((a 5)) ...) Ici, la création d'une variable lexicale se fait sans spécifier le type. C'est la caractéristique d'un langage à typage dynamique : le type de la donnée n'est pas associé au symbole qui dénote la variable mais est encodé dans la donnée elle-même. Ainsi, dans la portée du 'let', on peut interroger le type de la variable a (c'est une application de la réflexivité): (let ((a 5)) (when (numberp a) (print "a est un nombre")) ...) De plus, en cours d'exécution, 'a' pourrait recevoir un objet de type différent, si le programme l'autorise : (let ((a 5) (setf a "je suis une chaîne") ...) En résumé, le typage dynamique est une solution très commode pour le développement rapide de programmes, où le type des objets manipulés n'est pas forcément connu à l'avance. Il est nécessaire au développement d'un Protocole à Méta-Objets, ou MOP, car le typage statique l'interdit.

Implications du typage dynamique

La grande flexibilité que permet le typage dynamique se paye généralement par une surconsommation de mémoire correspondant à l'encodage du type dans la valeur, ainsi que par une perte de performance due aux indirections supplémentaires. Ce surcoût à l'exécution est toutefois contrebalancé par l'accroissement de la puissance des ordinateurs actuels, et permet le développement rapide d'applications. Pour les opérations algorithmiques coûteuses, les langages de script comme Python, Tcl ou Ruby peuvent s'interfacer à des bibliothèques écrites en langage de bas niveau comme le langage C. De plus, certains langages (en particulier Common Lisp) permettent une déclaration statique facultative du type, afin de prouver la consistance du typage à la compilation et de supprimer les indirections. Lorsqu'une fonction reçoit une donnée d'un type incorrect (erreur de type à l'exécution), une exception est levée.

Exemples

- SmallTalk
- Common Lisp, Dylan, Scheme
- PHP, Perl, Tcl, Python, Ruby, Bash
- Erlang, Oz, Prolog

Voir aussi

- lambda-calcul Catégorie:Théorie des types de:Datentyp en:Datatype es:Tipo de dato it:Tipo di dato lt:Duomenų struktūra ru:Тип данных sv:Datatyp
Sujets connexes
C (langage)   Common Lisp   Dylan   Développement rapide d'applications   Erlang   Lambda-calcul   Oz   Perl (langage)   Portée lexicale   Prolog   Python (langage)   Ruby   Réflexivité   Scheme   Symbole   Système de gestion d'exceptions   Typage statique   Valeur   Variable  
#
Accident de Beaune   Amélie Mauresmo   Anisocytose   C3H6O   CA Paris   Carole Richert   Catherinettes   Chaleur massique   Championnat de Tunisie de football D2   Classement mondial des entreprises leader par secteur   Col du Bonhomme (Vosges)   De viris illustribus (Lhomond)   Dolcett   EGP  
^