CSI 3525, - PowerPoint PPT Presentation

About This Presentation
Title:

CSI 3525,

Description:

Crit res de conception et d' valuation des langages de programmation ... un programme bref b tie partir d' l ments complexes et sp cialises? ... – PowerPoint PPT presentation

Number of Views:65
Avg rating:3.0/5.0
Slides: 33
Provided by: alanwi8
Category:
Tags: csi | bref | simplement

less

Transcript and Presenter's Notes

Title: CSI 3525,


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

2
Les langages de programmation et le processus de
programmation
  • Programmer, cest plus que simplement écrire du
    code.
  • Pourquoi étudier les langages de programmation?
  • Les paradigmes et applications de la
    programmation.

3
Programmer, cest plus que simplement écrire du
code.
  • Avant décrire le code,le problème est 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.
  • Quest-ce quun ordinateur comprend?
  • Comment lordinateur nous répondra?

4
Programmer, cest plus que simplement écrire du
code (suite)
  • Comment les langages de programmation
    diffèrent-ils des langages naturels?
  • Quest-ce qui fait de quelquun un bon
    programmeur?
  • Un programmeur devrait-il connaître plus dun
    langages de programmation?

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 appropries.

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 lapprentissage de nouveaux
    langages.
  • Pour savoir développer de nouveaux langages
    formels (pour lentré de données par exemple).
  • Pour constater comment les langages influencent
    linformatique en tant que discipline, et
    encouragent les bonnes pratiques de développement
    de logiciels.

7
Les différent types de langagesParadigmes de
programmation
  • Différent langages permettent de résoudre
    différent problèmes de façon différentes.
  • Une opération peut être exprimée dans différent
    langages, puis exécuté sur la même machine.

8
Différent paradigmes de programmation
  • Langages impératifs Ces langages permettent au
    programmeur dattribuer des valeurs a 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 declarations pour résoudre le problème.
    (Prolog, Lisp)

9
Langages Déclaratifs
  • Programmation fonctionnelle Un programme
    consiste en la déclaration de fonctions. Un appel
    a 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 a des
    fonctions.(Lisp)
  • Programmation logique Un programme consiste en
    la déclaration dune série d axiomes et de
    règles de déduction, et la présentation dun
    théorème à prouver. Le programme répond si le
    théorème peut être prouvé ou non à partir des
    déclarations. (Prolog)

10
Langages Impératifs
  • Programmation procédurale Le programme est
    divisé en blocs pouvant contenir des variables
    locales, ainsi que dautres blocs. (C, Fortran,
    Pascal)
  • Programmation orientée-objet Des objets se
    raportant 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
    linteraction entre ces objets. (Java, Smalltalk)
  • Programmation concurrente Langage permettant
    lutilisation de plusieurs CPU opérant en
    parallèle. Les donnés peuvent être partagées
    entre les processeurs ou restreintes a certain
    dentre eux. (Ada 95, Java)

11
Spécialisation dun langage
  • Langages a 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).

12
Niveau de complexité et dabstraction
  • 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)

13
Domaines dapplication
  • Traitement de données ("business applications").
  • Important dans le passé, maintenant largement
    remplace par les bases de données, tableurs, et
    logiciels spécialisés.
  • Calcul scientifique (incluant lingénierie).
  • Aujourdhui, largement influencé par la
    conception de nouveau hardwares tel que les
    superordinateurs ou les ordinateurs vectoriels.

14
Domaines dapplication (2)
  • Intelligence artificielle et autres applications
    en marge de linformatique.
  • Logiciel éducatifs, jeux
  • De nouveaux hardware sont proposés (présentement
    surtout simulés) pour lintelligence
    artificielle réseaux de neurones, ordinateurs à
    connexion.
  • Applications en interne
  • compilateurs, systèmes dexploitation, GUI, API.

15
Critères pour la conception et lévaluation de
langages de programmation
  • Lisibilité
  • Aptitude à lécriture
  • Fiabilité
  • Coût

16
Lisibilité
  • Ce critère est subjectif, mais important.
  • La lisibilité dun 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, labstraction procédurale, et
    labstraction des données.
  • Absence dambiguïtés
  • Absence dune surabondance de choix Par exemple,
    certain langages permettent décrire les boucles
    de plusieurs façon différentes.

17
Lisibilité (2)
  • Orthogonalité labsence de restrictions sur la
    façon de combiner les primitives du langage.(Il
    est plus facile de constater le manque
    dorthogonalité.)
  • Exemple Un tableau peut-il contenir des éléments
    de nimporte quel type?
  • Résulte en une diminution du nombre de cas
    spéciaux.
  • Peut être pousse trop loin (Algol 68).

18
Lisibilité (3)
  • Expressivité des structures de contrôle et de
    données.
  • Quest-ce qui est plus facile a 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 dexpressivité la récursivité, le
    retour arrière incorporé de Prolog, la recherche
    dans les langages de base de données.
  • Exemple de peu dexpressivité instructions
    dassembleur.
  • Apparence syntaxe élégante, commentaires.

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 doutils de
    modularisation et la capacité dêtre incorporé
    dans un environnement de programmation intégré.

20
Fiabilité et Coût
  • Fiabilité Vérification des types, traitement des
    exceptions et erreurs, labsence dambiguïtés (et
    en générale la lisibilité et laptitude a
    lécriture).
  • Coût associées à lutilisation du langage.
  • Temps nécessaire au développement (facilité de
    programmation, disponibilité de code, de
    librairies et de documentation).
  • Facilité dimplémentation (affecte la
    disponibilité et le coût des compilateurs) Algol
    68 a échoué, Ada presque limplémentation de
    Pascal, C, C et Java ont été de grand succès.
  • Temps nécessaire pour traduire, et lefficacité
    du code résultant.
  • Portabilité et standardisation.

21
Limplémentation de langages de programmation
  • Processeurs de langage
  • machines virtuelles
  • Modèles dimplémentation
  • Compilation et exécution

22
Processeurs de langage
  • A processeur de langage est un dispositif
    (logiciel ou matériel (hardware)) capable
    dexécuter des instructions du langage.
  • La traduction est le processus qui transforme un
    programme dun langage à un autre, tout en
    préservant son sens et sa fonctionnalité.
  • Le langage cible peut être directement exécutable
    sur lordinateur, ou (plus souvent) devra à
    nouveau être traduit en un langage de niveau
    inférieur.

23
Machines Virtuelles
  • Une machine virtuelle est une réalisation
    logicielle (simulation) dun processeur de
    langage.
  • Il est difficile de programmer directement pour
    le hardwarele 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.

24
Exemple de couches partagées
  • Tout processeurs de langage nécessitent une
    capacité dentrées /sorties.
  • Tout les processeurs de langage doivent effectuer
    des calcules (utiliser le CPU).

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é.

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 dapplication
  • Layer 7 données dentré aussi un langage

27
Machines Virtuellesexemples
  • 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

28
Machines Virtuellesexemples (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 implementation en Java de
Prolog Layer 6 Une implementation en Prolog de
mySQL Layer 7 Un patron de base de données
defini et créé Layer 8 des enregistrements à
inserer dans la base de données
29
Modèles dimplémentation
  • Compilation
  • Traduit le programme en un langage dune machine
    virtuelle dune 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.

30
Modèles dimplémentation(2)
  • La compilation pure et linterprétation pure sont
    peu utilisé. Limplé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.

31
Modèles dimplémentation(3)
  • Certain langages se prêtent mieux à
    linterprétation, par exemple Prolog et Lisp qui
    sont utilisé de manière interactive.
  • Dautre se prêtent mieux à la compilation, tel
    que C et Java.
  • Il existe des versions compilés de Prolog et
    Lisp
  • Une boucle dinterprétation de haut-niveau régît
    linteraction usagée.
  • Les prédicats / fonctions sont compilées en un
    format optimisé qui est interprété.

32
Compilation et exécution
Programme source
compilateur
Séquence dunités lexicales
Analyse lexicale (scaning)
Analyse syntaxique(parsing)
Table de symboles
Arbre syntaxique
Optimisation du code
Analyse sémantique
Programme abstrait(code intermédiaire)
Programme abstrait(optimisé)
Chargeur/Éditeur de liens (Loader/Linker)
Génération du code
Code exécutable(object code)
Programme résultant
Données dentré
Ordinateur
Données de sortie
Write a Comment
User Comments (0)
About PowerShow.com