En informatique, un interpréteur est un outil ayant pour tâche d'analyser, de traduire, et d'exécuter un programme écrit dans un langage informatique. De tels langages sont dits langages interprétés.
Le cycle d'un interpréteur est le suivant:
- lire et analyser une instruction ;
- si l'instruction est syntaxiquement correcte, l'exécuter ;
- passer à l'instruction suivante.
Ainsi, contrairement au compilateur, l'interpréteur se charge aussi de l'exécution du programme, au fur et à mesure de son interprétation. Du fait de cette phase d'interprétation, l'exécution d'un programme interprété est généralement plus lente que le même programme compilé.
L'intérêt des langages interprétés réside principalement dans la facilité de programmation et dans la portabilité. Les langages interprétés facilitent énormément la mise au point des programmes car ils évitent la phase de compilation, souvent longue, et limitent les possibilités de bogues. Ils permettent ainsi 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. La portabilité permet d'écrire un programme unique, pouvant être exécuté sur différentes plateformes sans changements, s'il existe un interpréteur spécifique à chaque plateforme matérielle.
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. Avec la nécessité d'automatiser rapidement certaines tâches complexes, on voit depuis le milieu des années 1990 émerger des langages de programmation interprétés ou semi-interprétés de haut niveau comme, entre autres, Ruby, Perl ou Python.
Utilisations des langages interprétés
Les langages interprétés trouvent de très nombreuses utilisations :
- dans le domaine éducatif, les langages interprétés permettent de se concentrer sur les algorithmes et les structures de données, et non sur les particularités de tel ou tel langage.
- les langages de calcul scientifique sont souvent interprétés. Ils permettent d'appeler des algorithmes de calcul performants précompilés. Une autre catégorie de langages scientifiques est celle des systèmes de calcul symbolique.
- les interpréteur de ligne de commande (désignés par le nom shell dans la terminologie Unix). Ces interpréteurs sont capables de comprendre des commandes tapées sur un clavier ou en provenance d'une autre source. Ils disposent d'une syntaxe spécifique à chaque système d'exploitation, et permettent de gérer les ressources matérielles d'une machines (disques, mémoire centrale, entrées/sorties, etc.) ainsi que la communication entre les programmes. Rexx est le langage de commandes des ordinateurs centralisés d'IBM, les Bourne shell, C-shell, Korn shell sont les shells les plus courants sous Unix et DOS, le plus rudimentaire, est celui des systèmes d'exploitation de Microsoft. Des langages de programmation comme Perl ou Rexx sont souvent installés pour disposer d'un environnement plus puissant et plus convivial que les shells d'origine.
- Le langage SQL (Standard Query Language) est un langage interprété standardisé qui permet de mettre à jour ou extraire des informations contenues dans des bases de données.
- Les navigateurs web reçoivent des instructions symboliques et les exécutent directement. Les navigateurs courants savent tous interpréter du code HTTP (HyperText Transfer Protocol) pour les instructions de transfert d'une machine à l'autre, du code HTML (HyperText Markup Langage) pour les descriptions des pages web, et du Javascript pour une programmation plus élaborée, offrant la possibilité de manipuler des variables plus ou moins complexes, des structures de contrôle et de manipuler les différents objets entrant dans la composition d'une page Web. Ces pages peuvent être statiques (elles sont écrites une fois pour toutes) ou générées dynamiquement par le serveur qui produit le code HTML au moment de la requête. Il peut ainsi adapter la page en fonction du contexte d'exécution. Les langages les plus couramment utilisés pour la génération dynamique de page sont Perl et PHP.
- De nombreux programmes incluent un langage afin d'automatiser certaines actions ou de créer de nouvelles fonctionnalités. Un des langages les plus utilisés pour cela est Scheme, une variante de Lisp. Le langage de description XML est aussi fortement utilisé pour le formatage des données, que ce soit au niveau de l'interface homme-machine, au niveau du transfert de données ou de leur écriture sous forme de fichiers.
- Le langage PostScript est un langage vectoriel de description graphique défini par la société Adobe, et souvent implémenté dans les imprimantes graphiques.