introduction - université de sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-introduction.pdf ·...
TRANSCRIPT
![Page 1: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/1.jpg)
INTRODUCTION IFT580 – Compilation et interprétation des langages
1
![Page 2: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/2.jpg)
Qu’est-ce qu’un compilateur ? • C’est un programme qui reçoit en entrée un texte écrit
dans un langage source (S) et produit en sortie un texte
écrit dans un langage cible (C)
• Le compilateur traduit le texte source vers le texte cible
• Le compilateur est écrit dans un langage quelconque (L)
2
![Page 3: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/3.jpg)
Qu’est-ce qu’un compilateur ?
• Si le texte cible est un programme exécutable, il peut être
démarré
• Les données reçues en entrées (E) sont transformées par
le texte cible pour produire les résultats (R)
3
![Page 4: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/4.jpg)
Qu’est-ce qu’un compilateur ?
4
S C L
Programme
source Compilateur Programme
cible
E
Données
R
Résultats
![Page 5: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/5.jpg)
Qu’est-ce qu’un compilateur ?
• Il y a donc trois langages impliqués dans la conception
d’un compilateur
• Le langage source, qui peut être simple ou complexe
• Le langage cible, qui peut être simple ou complexe
• Le langage utilisé pour écrire le compilateur
5
![Page 6: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/6.jpg)
Qu’est-ce qu’un compilateur ?
• Il n’est pas obligatoire pour le compilateur d’écrire le code
cible dans le langage de la machine
• LaTex PDF
• Lorsqu’on développe un nouveau langage, pourquoi
serait-il intéressant de le compiler vers le langage C++?
6
![Page 7: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/7.jpg)
Qu’est-ce qu’un compilateur ? • Quel langage devrait être utilisé pour écrire le
compilateur?
• Comment était écrit le premier compilateur puisqu’il n’y
avait pas de compilateur pour compiler ce compilateur?
• Problème de l’œuf et de la poule!
7
![Page 8: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/8.jpg)
Qu’est-ce qu’un compilateur ? • Habituellement, la première version du compilateur est écrite
avec un langage existant pour une sous-partie du langage source
• On peut ensuite réécrire le compilateur avec la partie supportée du langage, et utiliser le premier compilateur pour compiler le second
• On recommence une itération pour ajouter des fonctionnalités au langage
8
![Page 9: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/9.jpg)
Qu’est-ce qu’un compilateur ?
• Il est possible que la création d’un programme exécutable
requière plusieurs autres programmes qu’un compilateur
pour transformer le code source en programme
9
![Page 10: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/10.jpg)
Qu’est-ce qu’un compilateur ?
10
Compilateur
Préprocesseur
Relieur
Assembleur
Code source
Code source modifié
Code en langage d’assemblage
Code translatable
Programme exécutable
Fichiers de bibliothèque, etc.
![Page 11: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/11.jpg)
Qu’est-ce qu’un interpréteur ? • C’est un programme qui reçoit en entrée un texte écrit
dans un langage source (S), ainsi que les entrées
requises par le programme (E) et produit en sortie les
résultats du texte d’entrée (R)
• L’interpréteur lit chacune des instructions indiquées dans
le texte d’entrée et exécute les instructions appropriées
sur la machine cible
11
![Page 12: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/12.jpg)
Qu’est-ce qu’un interpréteur ?
12
S
E
R
Programme
source
Données
Interpréteur Résultats
![Page 13: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/13.jpg)
Qu’est-ce qu’un compilateur hybride ?
• C’est une approche qui combine le compilateur et
l’interpréteur
• Le texte source est transformé en code intermédiaire (I)
qui peut être lu et exécuté par l’interpréteur à l’aide des
données en entrée
• L’interpréteur produit les résultats finaux
13
![Page 14: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/14.jpg)
Qu’est-ce qu’un compilateur hybride ?
14
S I L
Programme
source Compilateur Code
intermédiaire
E
Données
R
Résultats Interpréteur
![Page 15: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/15.jpg)
Qu’est-ce qu’un compilateur hybride ?
• Les avantages d’un compilateur hybride sont
• Grande portabilité du code
• Habituellement, une meilleure gestion des erreurs
• Les désavantages sont
• Souvent une vitesse d’exécution plus lente
15
![Page 16: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/16.jpg)
Compilateur vs Interpréteur • Un compilateur produit habituellement du code plus
rapide qu’un interpréteur
• Le code produit par un compilateur est adapté à une
machine en particulier. Le code est donc difficilement
portable
16
![Page 17: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/17.jpg)
Compilateur vs Interpréteur • L’interprète est habituellement écrit dans un langage de
haut niveau, il est donc plus portable.
• L’écriture d’un interpréteur demande habituellement moins de travail qu’un compilateur standard
• L’interpréteur travaille directement avec la représentation sémantique, ce qui améliore la sécurité et la gestion des erreurs
17
![Page 18: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/18.jpg)
Histoire des compilateurs • Dans les années 1940, les premiers ordinateurs sont
construits
• L’ENIAC (Electronic Numerical Integrator And Computer) à
l’Université de Pennsylvanie
• Sert à calculer des tables de tir de calculs balistiques
• Remplace 200 personnes qui calculaient manuellement les tables
• Personne n’avait jamais programmé un ordinateur
• Il fallait programmer de façon manuelle, en enfichant des câbles et en
manipulant des commutateurs
18
![Page 19: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/19.jpg)
Histoire des compilateurs • Les premières programmeuses de l’ENIAC étaient 6
femmes
• Kathleen McNulty Mauchly Antonelli
• Jean Jennings Bartik
• Frances Synder Holberton
• Marlyn Wescoff Meltzer
• Frances Bilas Spence
• Ruth Lichterman Teitelbaum
19
![Page 20: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/20.jpg)
Histoire des compilateurs • Aucune documentation
• Seriez-vous capable de
programmer un ordinateur
sans aucune information,
outre les schémas
techniques du câblage de
la machine?
• C’est une tâche très
ardue!
20
![Page 21: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/21.jpg)
Histoire des compilateurs • Au début des années 1950, Grace Murray Hopper est
programmeuse sur le Harvard Mark I
• Elle lance l’idée folle de créer un nouveau langage de programmation, basé sur l’anglais, pour indiquer à l’ordinateur ce qu’il doit faire
• Personne ne la prend au sérieux, un ordinateur est seulement fait pour faire du calcul, et rien d’autre!
21
![Page 22: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/22.jpg)
Histoire des compilateurs • Elle écrit le premier programme qui
interprète du code et écrit le code
machine associé
• C’est ce qu’on appelle aujourd’hui
compiler un programme!
• Elle crée ensuite le langage
COBOL
22
![Page 23: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/23.jpg)
Histoire des compilateurs
• De 1945 à 1960
• On faisait de la génération de code
• Comment produire du code pour une machine spécifique?
• Souvent de l’assembleur au code machine manuellement
• Les programmes compilés étaient souvent plus longs et moins
efficaces que ceux écrits par des programmeurs
23
![Page 24: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/24.jpg)
Histoire des compilateurs • Développement des premiers langages
• FORTRAN (FORmula TRANslator) – 1954
• LISP (LISt Processing) – 1958
• ALGOL (ALGorithmic Oriented Language) – 1958
• COBOL (Common Business Oriented Language) – 1959
• ALGOL introduit deux concepts novateurs :
• Structure en blocs imbriqués
• Notions de portée
24
![Page 25: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/25.jpg)
Histoire des compilateurs • De 1960 à 1975
• Introduction de l’analyse syntaxique et des formalismes
• Prolifération des langages
• Développement de la plupart des paradigmes retrouvés dans les
langages modernes
• Concept de classe
• Ramasse-miette
• Compilation JIT (Just-in-time)
• La majorité des langages sont basés sur les langages précédents
25
![Page 26: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/26.jpg)
Histoire des compilateurs • Inspiré d’ALGOL
• SIMULA 1 (SIMple Universal LAnguage) – 1962
• SIMULA 67 – 1967 : Ajout d’un modèle de classe et de la simulation par événement discret
• C (évolution du langage B) – 1969-1973
• SmallTalk – 1970
• Inspiré de FORTRAN • BASIC (Beginner’s All-purpose Symbolic Instruction Code) – 1964
• ML (Meta Language) – 1973 • Fournira l’inspiration pour Haskell et CamL
26
![Page 27: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/27.jpg)
Histoire des compilateurs • De 1975 à 1990
• Consolidation des langages et des paradigmes
• Développement d’une nouvelle architecture matérielle
• Le matériel doit faciliter l’écriture des compilateurs, et non faciliter la vie
des programmeurs assembleur!
• Le problème devient : Comment optimiser le code?
• Création de C++, Ada, Eiffel, Perl, etc.
• On met l’emphase sur « comment compiler » au lieu de « vers quoi
compiler »
27
![Page 28: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/28.jpg)
Histoire des compilateurs • 1990 et +
• Gestion du parallélisme, hiérarchie de mémoires
• Apparition des langages « modernes »
• Python – 1991
• Java – 1995
• Php et Javascript – 1995
• C# – 2000
• Etc.
28
![Page 29: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/29.jpg)
Génération des langages • Première génération
• Langage machine : binaire, switchboard, etc.
• Deuxième génération
• Langages d’assemblage : propre à chaque architecture (IFT209)
• Troisième génération
• Fortran, Algol, Cobol, C++, Java, C#
• Quatrième génération
• SQL, Matlab, R, Mathematica
• Cinquième génération
• Prolog, programmation par contraintes, etc.
29
![Page 30: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/30.jpg)
Paradigmes des langages
• Programmation impérative
• Suite d’instructions, boucle, etc.
• Programmation orientée objet
• Classe, méthodes, objets, etc.
• Programmation fonctionnelle
• Sans effet de bord, appels de fonctions imbriqués
30
![Page 31: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/31.jpg)
Paradigmes des langages
• Programmation logique
• Utilise un moteur d’inférence, applique un ensemble de règles
• Programmation parallèle
• Plusieurs fils d’exécution, en coopération, en compétition, etc.
• Programmation événementielle
• « Callback », asynchrone, etc.
31
![Page 32: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/32.jpg)
Structure d’un compilateur
32
Analyseur
lexical
Analyseur
syntaxique
Analyseur
sémantique
Générateur
de code
intermédiaire
Optimiseur de code
indépendant de la
machine
Générateur
de code
Optimiseur de
code dépendant
de la machine
Table
des s
ym
bole
s
Partie frontale
Partie finale
Flot d’unités
lexicales
Arbre syntaxique
abstrait
Arbre syntaxique abstrait
décoré
Code intermédiaire
Code intermédiaire
optimisé Code cible
Code cible
optimisé
![Page 33: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/33.jpg)
Structure d’un compilateur
• Une phase représente une transformation entre les
données reçues en entrées et celles produites en sorties
• Une passe représente un ensemble de phases
• On lit d’un fichier, on fait les transformations, et on écrit le résultat
dans un fichier pour qu’il soit utilisé dans une passe suivante
33
![Page 34: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/34.jpg)
Structure d’un compilateur • Il y a trois types de compilateurs
• Compilateur étroit (narrow)
• Une boucle de lecture lit quelques lexèmes et génère la partie de code associé
• Compilateur large
• Lecture de l’ensemble du texte source et génération entière du code
• Compilateur à la volée (JIT)
• Lit une partit du code et le compile en appliquant des optimisations dépendantes du contexte d’exécution
34
![Page 35: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/35.jpg)
Propriétés d’un bon compilateur • Il doit bien fonctionner (correct)
• Le temps requis pour compiler doit être acceptable
• Il doit y avoir peu de limitations (ex : longueur des noms)
• Les messages d’erreurs produits doivent être clairs!
35
![Page 36: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/36.jpg)
Propriétés d’un bon compilateur • Le code généré doit être rapide à exécuter (qualité)
• La taille du code généré doit être acceptable
• L’énergie consommée par le code généré doit être
acceptable
36
![Page 37: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/37.jpg)
Propriétés d’un bon compilateur • Le compilateur doit avoir une conception modulaire pour
permettre
• d’être portable (portabilité)
• d’être reciblé facilement (reciblage)
• d’être maintenu simplement (maintenabilité)
• de fournir des versions différentes
37
![Page 38: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/38.jpg)
Propriétés d’un bon compilateur • Portabilité
• Facilité à installer sur
• Une autre machine
• Un autre système d’exploitation
• Permettre de générer du code pour une plateforme différente que
celle sur laquelle il s’exécute (cross-compiler)
38
![Page 39: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/39.jpg)
Propriétés d’un bon compilateur • Reciblage
• Permet de modifier le compilateur pour générer du code spécifique
à un processeur différent
• Ex : Un compilateur C++ qui compile pour un ordinateur Intel ou un
Smartphone possédant un processeur ARM
39
![Page 40: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/40.jpg)
Propriétés d’un bon compilateur • Maintenabilité
• Permet de corriger rapidement les bogues potentiels
• Différentes versions
• Permet de modifier et d’ajouter simplement de nouvelles
fonctionnalités
• Permet de les activer ou les désactiver pour être compatible avec
d’anciennes versions du langage
40
![Page 41: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/41.jpg)
Pourquoi étudier les compilateurs ? • C’est une branche de l’informatique qui est fondamentale
• Pour intégrer un vaste ensemble de connaissances vu
dans les cours d’informatique
• Pour comprendre pourquoi les langages sont construits
de la façon qu’ils le sont
41
![Page 42: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/42.jpg)
Pourquoi étudier les compilateurs ? • C’est intéressant de voir comment la magie se passe
• Plusieurs des concepts et algorithmes utilisés par les
compilateurs peuvent être utiles à d’autres problèmes
• Vous pourriez avoir à travailler sur des problèmes qui ont
un lien indirect avec les compilateurs
42
![Page 43: Introduction - Université de Sherbrookeinfo.usherbrooke.ca/.../ift580/notes/01-Introduction.pdf · 2018. 1. 5. · Assembleur Code source Code source modifié Code en langage d’assemblage](https://reader036.vdocuments.site/reader036/viewer/2022081601/610b01edc464ba09493cab08/html5/thumbnails/43.jpg)
Pourquoi étudier les compilateurs ? • Pour mieux comprendre les messages d’erreurs des
compilateurs
• Pour être plus efficace lorsque vous écrivez du code
• C’est juste trop amusant d’apprendre!
43