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

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Cours n° 1 Introduction à la programmation
Module Systèmes d’exploitation
Académie de Créteil - B.C.
Introduction: Concepts de la programmation
Fonctions & procédures
Algorithmique Résume.
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
Joscelin OUDRY IR2000 année
Appropriation et extensions d'un logiciel libre de traitement de réseaux bayésiens complexes pour l’appréciation quantitative des risques alimentaires.
Le Modèle Logique de Données
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Systèmes Experts implémentation en Prolog
Introduction : Compilation et Traduction
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Langage SysML.
La programmation Orienté Objet
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
Calcul et programmation au lycée avec Scilab
Introduction : Compilation et Traduction
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Récursivité.
le profil UML en temps réel MARTE
Démarche de résolution de problèmes
Paradigmes de Programmation
Expressions et assignations
Initiation à la conception de systèmes d'information
Réalisée par :Samira RAHALI
Chaque use-case génère un ou des scénarios, traduits par des diagrammes objets, qui permettent d’introduire et/ou de compléter les diagrammes des catégories.
1.2 COMPOSANTES DES VECTEURS
1 CSI3525: Concepts des Languages de Programmation Notes # 2: Criteres d Evaluation des Languages.
Programme et Langage C++
Évaluation et implémentation des langages
Algorithmique et Programmation
Paradigmes de Programmation
Introduction à la programmation (Java)
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
IGL301 - Spécification et vérification des exgiences 1 Chapitre 1 Introduction (ref : Bray chapitre 1)
Programmation concurrente
1.1 LES VECTEURS GÉOMÉTRIQUES
Cours de Base de Données & Langage SQL
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
Chapitre 1 Préliminaires.
Partie II Sémantique.
Détection du meilleur format de compression pour une matrice creuse dans un environnement parallèle hétérogène Olfa HAMDI-LARBI.
Programmation non procédurale Le projet ECOLE 2000
Les différents langages de programmation
ANALYSE METHODE & OUTILS
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
Institut Supérieur des Sciences Appliquées et de Technologie Sousse
Algorithmique et programmation (1)‏
Programmation en C++ Autres langages
Algorithmes et Programmation
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Langages de programmation Ordinateurs = Machines à exécution.  D’où la nécessité d’outils de communication qui s’adaptent le mieux aux utilisateurs. Comment.
CSI 3525, Histoire, page 1 Aperçu historique Voir le chapitre 2 du livre pour plus de détails.
Le langage Racket (Lisp)
Initiation à la conception des systèmes d'informations
1 IFT 099 Introduction à la programmation. 2 Plan du cours (sem. 1) 1.Introduction - les ordinateurs 2.La programmation procédurale 3.La programmation.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Introduction et Généralités sur l’Algorithmique
Introduction à MathML Par Katia Larrivée UQO Le 18 mars 2004.
Transcription de la présentation:

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 2 Les langages de programmation Les premiers ordinateurs digitaux furent construits dans les années 40. Le premier langage de programmation de haut- niveau fut Plankalkül Developé pour le Z3 par Konrad Zuse entre 1943 et Par contre, il n a été implementé que en Un programe qui calcule le maximum de trois variables

Mais meme avant CSI 3525, Évaluation et Implémentation, page 3 Décrire les pas et les figures de danse, et les mettre sur le papier. En plus des caractéristiques propres à cette dernière (hauteur, force, durée, etc.), le mouvement comporte un aspect tridimensionnel particulièrement difficile à rendre en deux dimensions. Décrire la fluidité du mouvement, rendre sa durée, sa dynamique, sa trajectoire au sol et dans l'espace, décrire les variantes, les singularités d'un danseur, les subtilités d'un style

CSI 3525, Évaluation et Implémentation, page 4 Programmer, cest plus que simplement écrire du code. Pourquoi étudier les langages de programmation? Un paradigme est un style de programmation qui traite de la manière dont les solutions aux problèmes doivent être formulées dans un langage de programmation

CSI 3525, Évaluation et Implémentation, page 5 Programmer, cest plus (mais moins) que simplement écrire du code. Avant de coder, il faut analyser le problème. 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. Al-Khawarizmi (783 – 850) fut un mathématicien, géographe, astrologue et astronome d'origine perse.

CSI 3525, Évaluation et Implémentation, page 6 Les langages de programmation transmettent des instructions aux ordinateurs Quest-ce quun ordinateur comprend? Comment lordinateur répondra? What is the matrix?

CSI 3525, Évaluation et Implémentation, page 7 Programmer, cest plus que simplement écrire du code 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?

CSI 3525, Évaluation et Implémentation, page 8 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.

CSI 3525, Évaluation et Implémentation, page 9 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.

CSI 3525, Évaluation et Implémentation, page 10 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.

CSI 3525, Évaluation et Implémentation, page 11 Différents paradigmes de programmation Langages impératifs: Ces langages permettent au programmeur dattribuer 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)

CSI 3525, Évaluation et Implémentation, page 12 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 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)

CSI 3525, Évaluation et Implémentation, page 13 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 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 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 à certain dentre eux. (Ada 95, Java)

CSI 3525, Évaluation et Implémentation, page 14 Spécialisation dun 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).

CSI 3525, Évaluation et Implémentation, page 15 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++)

CSI 3525, Évaluation et Implémentation, page 16 Domaines dapplication 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 lingénierie). Aujourdhui, largement influencé par la conception de nouveau hardwares tel que les superordinateurs ou les ordinateurs vectoriels.

CSI 3525, Évaluation et Implémentation, page 17 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.

CSI 3525, Évaluation et Implémentation, page 18 Critères pour la conception et lévaluation de langages de programmation Lisibilité Aptitude à lécriture Fiabilité Coût

CSI 3525, Évaluation et Implémentation, page 19 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.

CSI 3525, Évaluation et Implémentation, page 20 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 poussé trop loin (Algol 68).

CSI 3525, Évaluation et Implémentation, page 21 Expressivité des structures de contrôle et de données. –Quest-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?

CSI 3525, Évaluation et Implémentation, page 22 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.

CSI 3525, Évaluation et Implémentation, page 23 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é.

CSI 3525, Évaluation et Implémentation, page 24 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.

CSI 3525, Évaluation et Implémentation, page 25 Limplémentation de langages de programmation –Processeurs de langage –machines virtuelles –Modèles dimplémentation –Compilation et exécution

CSI 3525, Évaluation et Implémentation, page 26 Processeurs de langage Un 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.

CSI 3525, Évaluation et Implémentation, page 27 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.

CSI 3525, Évaluation et Implémentation, page 28 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).

CSI 3525, Évaluation et Implémentation, page 29 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é.

CSI 3525, Évaluation et Implémentation, page 30 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]

CSI 3525, Évaluation et Implémentation, page 31 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

CSI 3525, Évaluation et Implémentation, page 32 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 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

CSI 3525, Évaluation et Implémentation, page 33 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.

CSI 3525, Évaluation et Implémentation, page 34 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.

CSI 3525, Évaluation et Implémentation, page 35 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é.

CSI 3525, Évaluation et Implémentation, page 36 Compilation et exécution Données de sortie Données dentré Programme résultant Programme abstrait (optimisé) Arbre syntaxique Table de symboles Programme source Optimisation du code Analyse sémantique Chargeur/Éditeur de liens (Loader/Linker) Génération du code Ordinateur Analyse lexicale (scaning) Analyse syntaxique (parsing) compilateur Séquence dunités lexicales Programme abstrait (code intermédiaire) Code exécutable (object code)