CER SCHMITT Mathieu
Prosit : Sujet inconnu
Objectifs:
- Savoir le langage adapté au programme
Définitions des mots-clés :
Migration d’application : Passage d'un état existant d'un système d'information ou d'une application
vers une cible définie dans un projet ou un programme.
Code source : Le code source (ou le source) est un ensemble d'instructions écrites dans un langage
de programmation informatique de haut niveau, c'est-à-dire humainement compréhensible,
permettant d'obtenir un programme pour un ordinateur.
Code exécutable : Le code exécutable, c'est la forme qu'a le programme après sa compilation. Les
instructions écrites à l'origine en langage de programmation sont traduites en séquences d'opérations
adaptées au microprocesseur utilisé, et le programme peut s'exécuter sans faire appel à un autre
programme mais directement depuis le système d'exploitation .
Expressions différentes :
Contrôle de séquence :
Syntaxe d’une fonctionnalité :
Langage interprétée : En informatique, un programme écrit en langage interprété est converti en
instructions directement exécutables par la machine au moment de son exécution. Au contraire, un
programme écrit en langage compilé est traduit en instructions lisibles par la machine une fois pour
toutes.
CER SCHMITT Mathieu
Le programme qui traduit le langage interprété est appelé interprète ; il doit être en fonctionnement
sur la machine où l'on veut lancer un programme interprété.
Etudier langages compilés et langages interprétés
Interprète
Définition
En informatique, un interprète (parfois appelé, à tort, « interpréteur » par mauvaise traduction de
l'anglais) 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.
L'interprète est capable de lire le code source d'un langage sous forme de script, habituellement un
fichier texte, et d'en exécuter les instructions après une analyse syntaxique du contenu.
Généralement ces langages textuels sont appelés des langages de programmation. 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 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 du temps de conversion et du temps d'exécution, qui sont simultanés.
On différencie un programme dit script, d'un programme dit compiler :
Un programme script est exécuté à partir du fichier source via un interpréteur de script.
Un programme compilé est exécuté a partir d'un bloc en langage machine issu de la
traduction du fichier source.
Le cycle d'un interprète est le suivant :
lire et analyser une instruction (ou expression) ;
si l'instruction est syntaxiquement correcte, l'exécuter (ou évaluer l'expression) ;
passer à l'instruction suivante.
Ainsi, contrairement au compilateur, l'interprète exécute les instructions du programme (ou en
évalue les expressions), au fur et à mesure de leur lecture pour interprétation. Du fait de cette phase
sans traduction préalable, l'exécution d'un programme interprété est généralement plus lente que le
même programme compilé. La plupart des interprètes n'exécutent plus la chaîne de caractères
représentant le programme, mais une forme interne, telle qu'un arbre syntaxique.
En pratique, il existe une continuité 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' 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
CER SCHMITT Mathieu
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 caractère interprétatif ou compilatoire est
donc propre à une réalisation d'un langage de programmation, 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é. 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. 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 de langages informatiques sont aujourd'hui mis en œuvre au moyen d'une
machine virtuelle 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, 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 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.
Utilisation
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 calculs scientifiques ne demandant pas de calcul intensif (itérations sur de très grandes
matrices, par exemple) peuvent s'écrire avec profit dans un langage interprété. Ils
permettent d'appeler des algorithmes de calcul performants précompilés. Les systèmes de
calcul symbolique utilisent aussi cette possibilité ;
- les interprètes de ligne de commande (désignés par le nom shell dans la terminologie Unix).
Ces interprètes sont capables de comprendre des commandes frappé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 machine (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, tandis que les Bourne
shell, C-shell, Korn shell sont les shells les plus courants sous Unix ; quant au MS-DOS, le plus
rudimentaire des interprètes de ligne de commande, il est propre aux systèmes
d'exploitation de Microsoft. Des langages de programmation comme Perl ou Rexx sont
CER SCHMITT Mathieu
souvent installés pour disposer d'un environnement plus puissant et plus convivial que les
shells d'origine. On conçoit que la compilation traditionnelle présenterait peu d'intérêt pour
des commandes :
o dont chacune est exécutée en moyenne une fois ;
o ou dont la limitation de performance provient de questions d'accès aux fichiers, et
non de calcul ;
o 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 ;
o 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 entrants 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 Web sont Perl, PHP et
ASP ;
o 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. Dans ce domaine, on trouve également Perl, Python ou Tcl ;
o le langage PostScript, langage permettant la description de graphiques vectoriels
(propriété de la société Adobe), qui est souvent implémenté dans les imprimantes
graphiques, les tables traçantes et les photocomposeuses ;
o il existe des extensions permettant la programmation rapide d'interfaces graphiques
à l'aide de langages interprétés. Le plus répandu est Tcl/Tk, mais il existe également
Python/Tk, Python/wxWidgets, Perl/wxWidgets Python/Qt ou encore Gambas ;
o dans le monde industriel, de plus en plus de machines sont pilotables par un langage
interprété : les robots industriels, les machines-outils (APT, langage ISO (ou blocs)),
les traceurs de plan, souvent pilotés en PostScript.
Avantages
Inconvénient
- Portable
- Rependue
- Facilité de programmation
- Utilisés dans de nombreux OS
- Code source peu protégé
- Moins puissant que langage compilé
- Plus lent !!
CER SCHMITT Mathieu
Langage compi
Définition
Un compilateur est un programme informatique qui traduit un langage, le langage source, en un
autre, appelé le langage cible, en préservant la signification du texte source. Ce schéma général
décrit un grand nombre de programmes différents ; et ce que l'on entend par « signification du texte
source » dépend du rôle du compilateur. Lorsque l'on parle de compilateur, on suppose aussi en
général que le langage source est, pour l'application envisagée, de plus haut niveau que le langage
cible, c'est-à-dire qu'il présente un niveau d'abstraction supérieur.
En pratique, un compilateur sert le plus souvent à traduire un code source écrit dans un langage de
programmation en un autre langage, habituellement un langage d'assemblage ou un langage
machine. Le programme en langage machine produit par un compilateur est appelé code objet.
Un programme écrit dans un langage dit « compilé » va être traduit une fois pour toutes par un
programme annexe (le compilateur) afin de générer un nouveau fichier qui sera autonome, c'est-à-
dire qui n'aura plus besoin d'un programme autre que lui pour s'exécuter (on dit d'ailleurs que ce
fichier est exécutable).
Un programme écrit dans un langage compilé a comme avantage de ne plus avoir besoin, une fois
compilé, de programme annexe pour s'exécuter. De plus, la traduction étant faite une fois pour
toute, il est plus rapide à l'exécution. Toutefois il est moins souple que programme écrit avec un
langage interprété car à chaque modification du fichier source (fichier intelligible par l'homme : celui
qui va être compilé) il faudra recompiler le programme pour que les modifications prennent effet.
D'autre part, un programme compilé a pour avantage de garantir la sécurité du code source. En effet,
un langage interprété, étant directement intelligible (lisible), permet à n'importe qui de connaître les
secrets de fabrication d'un programme et donc de copier le code voire de le modifier. Il y a donc
risque de non-respect des droits d'auteur. D'autre part, certaines applications sécurisées nécessitent
la confidentialité du code pour éviter le piratage (transaction bancaire, paiement en ligne,
communications sécurisées, ...).
Structure d'un compilateur
La tâche principale d'un compilateur est de produire du code objet correct. La plupart des
compilateurs permettent d'optimiser le code (le code objet optimisé s'exécutera plus rapidement, ou
aura une occupation mémoire moindre).
Un compilateur fonctionne par analyse-synthèse, c'est-à-dire qu'au lieu de remplacer chaque
construction du langage source par une suite équivalente de constructions du langage cible, il
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !