csi 3525, Évaluation et implémentation, page 1 Évaluation et implémentation des langages les...
TRANSCRIPT
![Page 1: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/1.jpg)
CSI 3525, Évaluation et Implémentation, page 1
Évaluation et implémentation des langages
• Les langages de programmation et le processus de programmation
• Critères de conception et d’évaluation des langages de programmation
• Implémentation des langages de programmation
![Page 2: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/2.jpg)
CSI 3525, Évaluation et Implémentation, page 2
Les langages de programmation et le processus de programmation
Programmer, c’est plus que simplement écrire du code.
Pourquoi étudier les langages de programmation?
Les paradigmes et applications de la programmation.
![Page 3: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/3.jpg)
CSI 3525, Évaluation et Implémentation, page 3
Programmer, c’est plus que simplement écrire du code.
• Avant d’écrire le code,le problème est l’analyse. Un algorithme est développé (ou emprunté), le coût de la solution est évalué.
• Après avoir écrit le code, le programme doit être maintenu.
• Les langages de programmation transmettent des instructions aux ordinateurs.– Qu’est-ce qu’un ordinateur comprend?– Comment l’ordinateur nous répondra?
![Page 4: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/4.jpg)
CSI 3525, Évaluation et Implémentation, page 4
Programmer, c’est plus que simplement écrire du code (suite)
• Comment les langages de programmation diffèrent-ils des langages naturels?
• Qu’est-ce qui fait de quelqu’un un bon programmeur?
• Un programmeur devrait-il connaître plus d’un langages de programmation?
![Page 5: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/5.jpg)
CSI 3525, Évaluation et Implémentation, page 5
Pourquoi étudier les langages de programmation?
• Pour mieux comprendre la relation entre les algorithmes et les programmes.
• Pour apprendre à trouver des solutions générales, indépendantes du langage choisi.
• Pour pouvoir mieux choisir les outils de programmation les plus appropriés.
![Page 6: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/6.jpg)
CSI 3525, Évaluation et Implémentation, page 6
Pourquoi étudier les langages de programmation? (suite)
• Pour apprécier le fonctionnement des ordinateurs en sachant comment les langages sont implémentés.
• Pour faciliter l’apprentissage de nouveaux langages.
• Pour savoir développer de nouveaux langages formels (pour l’entré de données par exemple).
• Pour constater comment les langages influencent l’informatique en tant que discipline, et encouragent les bonnes pratiques de développement de logiciels.
![Page 7: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/7.jpg)
CSI 3525, Évaluation et Implémentation, page 7
Les différent types de langages:Paradigmes de programmation
• Différent langages permettent de résoudre différents problèmes de façon différentes.
• Une opération peut être exprimée dans différents langages, puis exécuté sur la même machine.
![Page 8: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/8.jpg)
CSI 3525, Évaluation et Implémentation, page 8
Différents paradigmes de programmation
• Langages impératifs: Ces langages permettent au programmeur d’attribuer des valeurs à des espaces mémoire, afin de décrire explicitement comment résoudre le problème. (Java, C++, Pascal)
• Langages déclaratifs: Ces langages permettent au programmeur de déclarer diverse entités et relations. Le programme pourra ensuite utiliser ces déclarations pour résoudre le problème. (Prolog, Lisp)
![Page 9: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/9.jpg)
CSI 3525, Évaluation et Implémentation, page 9
Langages Déclaratifs
• Programmation fonctionnelle: Un programme consiste en la déclaration de fonctions. Un appel à une fonction est fait et retournera un élément qui dépendra de la valeur de ses paramètres qui peuvent, eux même, être des appels à des fonctions.(Lisp)
• Programmation logique: Un programme consiste en la déclaration d’une série d ’axiomes et de règles de déduction, et la présentation d’un théorème à prouver. Le programme répond si le théorème peut être prouvé ou non à partir des déclarations. (Prolog)
![Page 10: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/10.jpg)
CSI 3525, Évaluation et Implémentation, page 10
Langages Impératifs
• Programmation procédurale: Le programme est divisé en blocs pouvant contenir des variables locales, ainsi que d’autres blocs. (C, Fortran, Pascal)
• Programmation orientée objet: Des objets se rapportant au problème sont définis, avec leurs attributs et leur façon de réagir à différent événements. Le problème est résolu grâce a l’interaction entre ces objets. (Java, Smalltalk)
• Programmation concurrente: Langage permettant l’utilisation de plusieurs CPU opérant en parallèle. Les donnés peuvent être partagées entre les processeurs ou restreintes à certain d’entre eux. (Ada 95, Java)
![Page 11: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/11.jpg)
CSI 3525, Évaluation et Implémentation, page 11
Spécialisation d’un langage
• Langages à usage général: la plupart des langages que vous connaissez.
• Langages spécialises: ex: matlab (mathématiques), Cobol (production de rapports), SQL (bases de données), Perl (langage script).
![Page 12: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/12.jpg)
CSI 3525, Évaluation et Implémentation, page 12
Niveau de complexité et d’abstraction
• Langages de bas niveau (langage machine, assembleur).
• Langages de haut niveau (les langages les plus utilisés).
• Langages de très haut niveau (Prolog, ainsi que certain langages spécialises).
• Au delà des langages de programmation: Environnements de programmation et outils de développement logiciel (JBuilder, Visulal C++)
![Page 13: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/13.jpg)
CSI 3525, Évaluation et Implémentation, page 13
Domaines d’application
• Traitement de données ("business applications").
Important dans le passé, maintenant largement remplacé par les bases de données, tableurs, et logiciels spécialisés.
• Calcul scientifique (incluant l’ingénierie).
Aujourd’hui, largement influencé par la conception de nouveau hardwares tel que les superordinateurs ou les ordinateurs vectoriels.
![Page 14: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/14.jpg)
CSI 3525, Évaluation et Implémentation, page 14
Domaines d’application (2)
• Intelligence artificielle et autres applications en marge de l’informatique.– Logiciel éducatifs, jeux…– De nouveaux hardware sont proposés
(présentement surtout simulés) pour l’intelligence artificielle: réseaux de neurones, ordinateurs à connexion.
• Applications en interne– compilateurs, systèmes d’exploitation,
GUI, API.
![Page 15: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/15.jpg)
CSI 3525, Évaluation et Implémentation, page 15
Critères pour la conception et l’évaluation de langages de programmation
Lisibilité
Aptitude à l’écriture
Fiabilité
Coût
![Page 16: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/16.jpg)
CSI 3525, Évaluation et Implémentation, page 16
Lisibilité
• Ce critère est subjectif, mais important.• La lisibilité d’un langage est rendu essentielle
par les usages courrant du génie logiciel, en particulier, pour les fins d’évolution, de maintenance, et de mise à jour des logiciels.
• Abstraction: permettre la généralité des programmes, l’abstraction procédurale, et l’abstraction des données.
• Absence d’ambiguïtés• Absence d’une surabondance de choix: Par
exemple, certain langages permettent d’écrire les boucles de plusieurs façon différentes.
![Page 17: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/17.jpg)
CSI 3525, Évaluation et Implémentation, page 17
Lisibilité (2)
• Orthogonalité: l’absence de restrictions sur la façon de combiner les primitives du langage.(Il est plus facile de constater le manque d’orthogonalité.)
– Exemple: Un tableau peut-il contenir des éléments de n’importe quel type?
– Résulte en une diminution du nombre de cas spéciaux.
– Peut être poussé trop loin (Algol 68).
![Page 18: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/18.jpg)
CSI 3525, Évaluation et Implémentation, page 18
Lisibilité (3)• Expressivité des structures de contrôle et de données.
– Qu’est-ce qui est plus facile à lire et maintenir:
un long programme bâtie à partir d’éléments simple?
-ou-
un programme bref bâtie à partir d’éléments complexes et spécialises?
– Exemples d’expressivité: la récursivité, le retour arrière incorporé de Prolog, la recherche dans les langages de base de données.
– Exemple de peu d’expressivité: instructions d’assembleur.
• Apparence: syntaxe élégante, commentaires.
![Page 19: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/19.jpg)
CSI 3525, Évaluation et Implémentation, page 19
Aptitude à l’écriture• Encore subjectif.
• Abstraction: comme pour la lisibilité
• Simplicité:
– Basic et Pascal sont simple
– Prolog est conceptuellement simple, mais difficile en pratique.
– C++ et Java?
• Expressivité (encore).
• Modularité: aussi la présence d’outils de modularisation et la capacité d’être incorporé dans un environnement de programmation intégré.
![Page 20: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/20.jpg)
CSI 3525, Évaluation et Implémentation, page 20
Fiabilité et Coût• Fiabilité: Vérification des types, traitement des exceptions
et erreurs, l’absence d’ambiguïtés (et en générale la lisibilité et l’aptitude a l’écriture).
• Coût associées à l’utilisation du langage.
– Temps nécessaire au développement (facilité de programmation, disponibilité de code, de librairies et de documentation).
– Facilité d’implémentation: (affecte la disponibilité et le coût des compilateurs) Algol 68 a échoué, Ada presque; l’implémentation de Pascal, C, C++ et Java ont été de grand succès.
– Temps nécessaire pour traduire, et l’efficacité du code résultant.
– Portabilité et standardisation.
![Page 21: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/21.jpg)
CSI 3525, Évaluation et Implémentation, page 21
L’implémentation de langages de programmation
– Processeurs de langage
– machines virtuelles
– Modèles d’implémentation
– Compilation et exécution
![Page 22: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/22.jpg)
CSI 3525, Évaluation et Implémentation, page 22
Processeurs de langage
• A processeur de langage est un dispositif (logiciel ou matériel (hardware)) capable d’exécuter des instructions du langage.
• La traduction est le processus qui transforme un programme d’un langage à un autre, tout en préservant son sens et sa fonctionnalité.
• Le langage cible peut être directement exécutable sur l’ordinateur, ou (plus souvent) devra à nouveau être traduit en un langage de niveau inférieur.
![Page 23: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/23.jpg)
CSI 3525, Évaluation et Implémentation, page 23
Machines virtuelles
• Une machine virtuelle est une réalisation logicielle (simulation) d’un processeur de langage.
• Il est difficile de programmer directement pour le hardware—le hardware est donc généralement « enveloppé » de plusieurs couches logicielles.
• Une couche peut être partagé par plusieurs processeurs de langage,chacun ayant sa propre machine virtuelle au dessus de cette couche.
![Page 24: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/24.jpg)
CSI 3525, Évaluation et Implémentation, page 24
Exemple de couches partagées
• Tout processeurs de langage nécessitent une capacité d’entrées /sorties.
• Tout les processeurs de langage doivent effectuer des calcules (utiliser le CPU).
![Page 25: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/25.jpg)
CSI 3525, Évaluation et Implémentation, page 25
Machines virtuelles
• Il existe normalement une hiérarchie de machines virtuelles:
– Au plus bas niveau: hardware.
– Au plus haut: des langages plus intuitifs pour le programmeur.
– Chaque couche est exprimée uniquement en terme de la précédente, ce qui assure une abstraction approprié.
![Page 26: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/26.jpg)
CSI 3525, Évaluation et Implémentation, page 26
Exemple de hiérarchie de machines virtuelles
Layer 0: hardware
Layer 1: microcode
Layer 2: langage machine
Layer 3: appels système
Layer 4: code indépendant de la machine
Layer 5: langage de haut niveau (ou assembleur)
Layer 6: programme d’application
Layer 7: données d’entré [aussi un langage]
![Page 27: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/27.jpg)
CSI 3525, Évaluation et Implémentation, page 27
Machines virtuelles—exemples
Layer 0: IBM Netvista avec Pentium 4 de Intel, 2GHz
Layer 1: Langage machine IBM Intel
Layer 2: Windows XP
Layer 3: Java byte-code
Layer 4: Java 2.0 (code developé en JRE 1.4.0)
Layer 5: comparateur intelligent de programmes C++, écrit en Java
Layer 6: deux programmes C++ à comparer afin de trouver les similarités
![Page 28: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/28.jpg)
CSI 3525, Évaluation et Implémentation, page 28
Machines virtuelles—exemples (2)
Layer 0: IBM Netvista avec Pentium 4 de Intel, 2GHz
Layer 1: Langage machine IBM Intel
Layer 2: Windows NT 4.0
Layer 3: Java byte-code
Layer 4: JDK 1.2
Layer 5: Une implémentation en Java de Prolog
Layer 6: Une implémentation en Prolog de mySQL
Layer 7: Un patron de base de données défini et créé
Layer 8: des enregistrements à insérer dans la base de données
![Page 29: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/29.jpg)
CSI 3525, Évaluation et Implémentation, page 29
Modèles d’implémentation
• Compilation:– Traduit le programme en un langage d’une
machine virtuelle d’une couche plus basse.– Le code résultant sera exécuté plus tard.
• Interprétation:– Divise le programme en petit fragments
(représentant des éléments de syntaxe).– Une boucle traduit et exécute immédiatement
les fragments.
![Page 30: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/30.jpg)
CSI 3525, Évaluation et Implémentation, page 30
Modèles d’implémentation(2)
• La compilation pure et l’interprétation pure sont peu utilisé. L’implémentation des langages de programmation utilise souvent un mélange des deux.
- exemple: Java est compilé en « bytecode », puis celui-ci est interprété.
• On designer un processeur de langage comme interpréteur si il ressemble plus à un interpréteur, et comme compilateur, si il ressemble plus à un compilateur.
![Page 31: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/31.jpg)
CSI 3525, Évaluation et Implémentation, page 31
Modèles d’implémentation(3)
• Certain langages se prêtent mieux à l’interprétation, par exemple Prolog et Lisp qui sont utilisé de manière interactive.
• D’autre se prêtent mieux à la compilation, tel que C++ et Java.
• Il existe des versions compilés de Prolog et Lisp:– Une boucle d’interprétation de haut-niveau régît
l’interaction usagée.– Les prédicats / fonctions sont compilées en un
format optimisé qui est interprété.
![Page 32: CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation](https://reader036.vdocuments.pub/reader036/viewer/2022062404/551d9da4497959293b8d4a22/html5/thumbnails/32.jpg)
CSI 3525, Évaluation et Implémentation, page 32
Compilation et exécution
Données de sortieDonnées d’entré
Programme résultant
Programme abstrait(optimisé)
Arbre syntaxiqueTable de symboles
Programme source
Optimisationdu code
Analysesémantique
Chargeur/Éditeur de liens(Loader/Linker)
Génération du code
Ordinateur
Analyse lexicale(scaning)
Analyse syntaxique(parsing)
compilateur
Séquence d’unitéslexicales
Programme abstrait(code intermédiaire)
Code exécutable(object code)