Langages à objets |
C++ - C# - D Delphi - Eiffel - Groovy Java - Lisaac - Python - Ruby Simula - Smalltalk Visual Basic - WLangage |
Langages impératifs |
APL - ASP - Assembleur (Un langage d'assemblage ou langage assembleur ou simplement assembleur par abus de langage,...) BASIC - C (Le C++ est un langage de programmation permettant la programmation sous de multiples paradigmes...) - Cobol (COBOL est un langage de programmation de troisième génération créé en 1959...) - Natural (Natural est un langage de programmation semi-compilé, édité par la société...) Forth - Fortran - Limbo Logo - Pascal - Perl - PHP |
Langages fonctionnels |
Haskell (Haskell est un langage de programmation fonctionnel. Il est fondé sur le lambda-calcul et la...) - ML/OCaml Lisp/Common Lisp Scheme - XSLT |
Langages déclaratifs |
Clips - Prolog (Prolog est l’un des principaux langages de programmation logique inventé à...) |
Langages concurrents |
Ada 95 - Erlang |
Voir aussi |
Conception - Codage (De façon générale un codage permet de passer d'une représentation des...) Tests - Optimisations |
En informatique (L´informatique - contraction d´information et automatique - est le domaine...), un interprète (parfois appelé, à tort, " interpréteur " par mauvaise traduction de l'anglais) est un outil (Un outil est un objet finalisé utilisé par un être vivant dans le but d'augmenter son...) ayant pour tâche d'analyser, de traduire et d'exécuter un programme écrit dans un langage informatique (On appelle langage informatique un langage formel utilisé lors de la conception, la mise en...). De tels langages sont dits langages interprétés.
L'interprète est capable de lire le code source (Le code source (ou les sources voire le source) est un ensemble d'instructions écrites dans un...) d'un langage sous forme de script, habituellement un fichier ( Un fichier est un endroit où sont rangées des fiches. Cela peut-être un meuble, une pièce, un...) texte, et d'en exécuter les instructions après une analyse syntaxique (L'analyse syntaxique consiste à mettre en évidence la structure d'un texte,...) du contenu. Généralement ces langages textuels sont appelés des langages de programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent...). Cette interprétation conduit à une exécution d'action ou à un stockage de contenu ordonné par la syntaxe textuelle.
L'interprétation repose sur l'exécution dynamique (Le mot dynamique est souvent employé désigner ou qualifier ce qui est relatif au mouvement. Il...) du programme par un autre programme (l'interprète), plutôt que sur sa conversion en un autre langage (par exemple le langage machine) ; elle évite la séparation (D'une manière générale, le mot séparation désigne une action consistant à séparer quelque...) du temps (Le temps est un concept développé par l'être humain pour appréhender le...) de conversion et du temps d'exécution, qui sont simultanés.
On différencie un programme dit script, d'un programme dit compilé :
Le cycle d'un interprète est le suivant :
Ainsi, contrairement au compilateur (Un compilateur est un programme informatique qui traduit un langage, le langage source, en un...), l'interprète exécute les instructions du programme (ou en évalue les expressions), au fur (Fur est une petite île danoise dans le Limfjord. Fur compte environ 900 hab. . L'île...) et à mesure de leur lecture pour interprétation. Du fait de cette phase (Le mot phase peut avoir plusieurs significations, il employé dans plusieurs domaines et...) sans traduction préalable, l'exécution d'un programme interprété est généralement plus lente (La Lente est une rivière de la Toscane.) que le même programme compilé. La plupart des interprètes n'exécutent plus la chaîne de caractères (En informatique, une chaîne de caractères est une suite ordonnée de caractères....) représentant le programme, mais une forme interne (En France, ce nom désigne un médecin, un pharmacien ou un chirurgien-dentiste, à la...), telle qu'un arbre (Un arbre est une plante terrestre capable de se développer par elle-même en hauteur, en...) syntaxique.
En pratique, il existe une continuité (En mathématiques, la continuité est une propriété topologique d'une fonction....) entre interprètes et compilateurs. Même dans les langages compilés, il subsiste souvent une part interprétée (souvent les formats d'impressions 'FORMAT' de Fortran, 'printf (printf (pour l'anglais print formatted, soit « imprimer formaté ») est une...)' de C…, restent interprétés). Réciproquement, la plupart des interprètes utilisent des représentations internes intermédiaires (arbres syntaxiques abstraits, ou même code octet) et des traitements (analyses lexicale et syntaxique) ressemblant à ceux des compilateurs. Enfin, certaines implémentations de certains langages (par exemple SBCL pour Common Lisp) sont interactifs comme un interprète, mais traduisent dès que possible le texte d'un bout de programme en du code machine directement exécutable par le processeur (Le processeur, ou CPU (de l'anglais Central Processing Unit, « Unité centrale de...). Le caractère interprétatif ou compilatoire est donc propre à une réalisation d'un langage de programmation (Un langage de programmation est un langage informatique, permettant à un être humain...), et pas au langage lui-même.
L'intérêt des langages interprétés réside principalement dans la facilité de programmation et dans la portabilité (Selon le contexte, le mot portabilité peut avoir plusieurs significations :). Les langages interprétés facilitent énormément la mise au point (Graphie) des programmes car ils évitent la phase de compilation, souvent longue, et limitent les possibilités de bogues. Il est en général possible d'exécuter des programmes incomplets, ce qui facilite le développement rapide d'applications ou de prototypes d'applications. Ainsi, le langage BASIC fut le premier langage interprété à permettre au grand public d'accéder à la programmation, tandis que le premier langage de programmation moderne interprété est Lisp.
La portabilité permet d'écrire un programme unique, pouvant être exécuté sur diverses plate-formes sans changements, pourvu qu'il existe un interprète spécifique à chacune des ces plate-formes matérielles.
Un certain nombre (La notion de nombre en linguistique est traitée à l’article « Nombre...) de langages informatiques sont aujourd'hui mis en œuvre au moyen d'une machine virtuelle (Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) est la création de...) applicative. Cette technique est à mi-chemin entre les interprètes tels que décrits ici et les compilateurs. Elle offre la portabilité des interprètes avec une bonne efficacité. Par exemple, des portages de Java, Lisp, Scheme, Ocaml, Perl (Parrot), Python, Ruby, Lua (Lua est un langage de script libre, réflexif et impératif.), C, etc. sont faites via une machine virtuelle.
L'interprétation abstraite (inventée par Patrick et Radhia Cousot) est une technique et un modèle d'analyse statique (Le mot statique peut désigner ou qualifier ce qui est relatif à l'absence de mouvement. Il peut...) de programmes qui parcourt, un peu à la manière d'un interprète, le programme analysé en y remplaçant les valeurs par des abstractions. Par exemple, les valeurs des variables entières sont abstraites par des intervalles d'entiers, ou des relations algébriques entre variables.
Avec l'apparition du langage compilé Pascal et de compilateurs commerciaux rapides comme Turbo Pascal, les langages interprétés connurent à partir du milieu des années 1980 un fort déclin. Trois éléments changèrent la donne dans les années 1990 :
Les langages interprétés trouvent de très nombreuses utilisations :