32
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

CSI 3525, Évaluation et Implémentation, page 1 Évaluation et implémentation des langages Les langages de programmation et le processus de programmation

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)