Évaluation et implémentation des langages



Documents pareils
Éléments de programmation et introduction à Java

Cours 1 : La compilation

Chapitre I Notions de base et outils de travail

Les Langages Informatiques

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Le génie logiciel. maintenance de logiciels.

Machines virtuelles Cours 1 : Introduction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction aux Bases de Données Relationnelles Conclusion - 1

Cours d Algorithmique et de Langage C v 3.0

Traduction des Langages : Le Compilateur Micro Java

L informatique en BCPST

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Programmation C. Apprendre à développer des programmes simples dans le langage C

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Préparation à l examen EFA en Macro

Documentation d information technique spécifique Education. PGI Open Line PRO

Chapitre 2 : Abstraction et Virtualisation

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

UE Programmation Impérative Licence 2ème Année

Cours Bases de données

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Analyse,, Conception des Systèmes Informatiques

Annexe : La Programmation Informatique

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Vulgarisation Java EE Java EE, c est quoi?

Environnements de développement (intégrés)

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Architectures web/bases de données

Installation Client (licence réseau) de IBM SPSS Modeler 14.2

Chapitre 1 Qu est-ce qu une expression régulière?

Rebol, un langage «différent»

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

CH.3 SYSTÈMES D'EXPLOITATION

IBM Tivoli Monitoring, version 6.1

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

M Études et développement informatique

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

BULK SMS Envoi en masse d un message texte moyennant un téléphone mobile (GSM)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Optimisation de logiciels de modélisation sur centre de calcul

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

TP1 : Initiation à Java et Eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

M Études et développement informatique

Information utiles. webpage : Google+ : digiusto/

DotNet. Plan. Les outils de développement

Cours 1 : Qu est-ce que la programmation?

Présentation du module Base de données spatio-temporelles

Compilation (INF 564)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Intelligence Artificielle et Robotique

Dossier de compétences :

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

CHEF DE PROJET - DÉVELOPPEUR SENIOR DELPHI. 50 ans - 16 ans d'expérience

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Utilisation des tableaux sémantiques dans les logiques de description

Université de Bangui. Modélisons en UML

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Moderniser. le système d information et le portefeuille applicatif.

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Compte Rendu d intégration d application

Mise en œuvre des serveurs d application

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Systèmes et traitement parallèles

SQL Parser XML Xquery : Approche de détection des injections SQL

Introduction aux concepts d ez Publish

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

RTDS G3. Emmanuel Gaudin

Le programme d examens du Bureau canadien des conditions d admission en génie d Ingénieurs Canada englobe 19 domaines du génie.

Sommaire. Systèmes d Exploitation Intégration Sage 100 Sage CRM Disponibilité Client Bases de données... 3

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Générer du code à partir d une description de haut niveau

Mercredi 15 Janvier 2014

Outils pour les réseaux de neurones et contenu du CD-Rom

Logiciel Libre Cours 2 Fondements: Programmation

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

M Études et développement null informatique. R i. Appellations. Analyste cogniticien / cogniticienne informatique

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Projet de Veille Technologique

Machines Virtuelles. et bazard autour. Rémi Forax

Résumé CONCEPTEUR, INTEGRATEUR, OPERATEUR DE SYSTEMES CRITIQUES

Bases de données Cours 1 : Généralités sur les bases de données

Systèmes d information et bases de données (niveau 1)

Transcription:

É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 Les fondations de l implémentation des langages de programmation CSI 3525, Évaluation et Implémentation, page 1

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

Programmer, c est plus que simplement écrire du code. Avant d écrire du code, il est essentiel de débuter par une 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? CSI 3525, Évaluation et Implémentation, page 3

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 langage de programmation? CSI 3525, Évaluation et Implémentation, page 4

Pourquoi étudier des 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 5

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

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ée sur la même machine. CSI 3525, Évaluation et Implémentation, page 7

Différents paradigmes de programmation Langages impératifs: Ces langages permettent au programmeur d attribuer des valeurs à des espaces de mémoire, afin de décrire explicitement la façon de résoudre un 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 8

Langages Déclaratifs Programmation fonctionnelle: Un programme consistant de déclarations de fonctions. Un appel à une fonction est fait et retourne un élément qui dépend de la valeur de ses paramètres qui peuvent, eux même, être des appels à des fonctions.(lisp) Programmation logique: Un programme consistant de déclarations de séries d axiomes et de règles de déduction, et de 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) CSI 3525, Évaluation et Implémentation, page 9

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érants en parallèle. Les donnés peuvent être partagées entre les processeurs ou restreintes à certains d entre eux. (Ada 95, Java) CSI 3525, Évaluation et Implémentation, page 10

Spécialisation d un langage Langages à usage général: la plupart des langages que vous connaissez. Langages spécialisés: ex: matlab (mathématiques), Cobol (production de rapports), SQL (bases de données), Perl (langage script). CSI 3525, Évaluation et Implémentation, page 11

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écialisés). Au delà des langages de programmation: Environnements de programmation et outils de développement logiciel (JBuilder, Visual C++) CSI 3525, Évaluation et Implémentation, page 12

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 super-ordinateurs ou les ordinateurs vectoriels. CSI 3525, Évaluation et Implémentation, page 13

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

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 15

Lisibilité Ce critère est subjectif, mais important. La lisibilité d un langage est rendu essentielle par les usages courant du génie logiciel, en particulier, pour les fins d évolution, de maintenance, et de mise à jour des logiciels. Abstraction: permet 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. CSI 3525, Évaluation et Implémentation, page 16

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

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

Aptitude à l écriture Encore subjectif. Abstraction: comme pour la lisibilité Simplicité: Basic et Pascal sont simples 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é. CSI 3525, Évaluation et Implémentation, page 19

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

L implémentation de langages de programmation Processeurs de langage Machines virtuelles Modèles d implémentation Compilation et exécution CSI 3525, Évaluation et Implémentation, page 21

Processeurs de langage Un processeur de langage est un dispositif (logiciel ou matériel (hardware)) capable d exécuter des instructions de ce langage. La traduction est le processus qui transforme un programme d un langage à un autre, tout en préservant son intégrité 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. CSI 3525, Évaluation et Implémentation, page 22

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

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

Machines virtuelles Il existe normalement une hiérarchie de machines virtuelles: Au plus bas niveau: hardware ou matériel. Au plus haut niveau: les langages les plus intuitifs pour le programmeur. Chaque couche est exprimée uniquement en fonction de la précédente, ce qui assure une abstraction approprié. CSI 3525, Évaluation et Implémentation, page 25

Exemple de hiérarchie de machines virtuelles Layer 0: Layer 1: Layer 2: Layer 3: Layer 4: Layer 5: Layer 6: Layer 7: hardware microcode langage de machine appels de système code indépendant de la machine langage de haut niveau (ou assembleur) programme d application données d entrées [aussi un langage] CSI 3525, Évaluation et Implémentation, page 26

Layer 0: Layer 1: Layer 2: Layer 3: Machines virtuelles exemples IBM Netvista avec Pentium 4 de Intel, 2GHz Langage machine IBM Intel Windows XP Java byte-code Layer 4: Java 2.0 (code developé en JRE 1.4.0) Layer 5: Layer 6: comparateur intelligent de programmes C++, écrit en Java deux programmes C++ à comparer afin de trouver les similarités CSI 3525, Évaluation et Implémentation, page 27

Layer 0: Layer 1: Machines virtuelles exemples (2) IBM Netvista avec Pentium 4 de Intel, 2GHz Langage machine IBM Intel Layer 2: Windows NT 4.0 Layer 3: Java byte-code Layer 4: JDK 1.2 Layer 5: Layer 6: Layer 7: Layer 8: Une implémentation en Java de Prolog Une implémentation en Prolog de mysql Un patron de base de données défini et créé des enregistrements à insérer dans la base de données CSI 3525, Évaluation et Implémentation, page 28

Compilation: Modèles d implémentation Traduit le programme en un langage de machine virtuelle de couche plus basse. Le code résultant sera exécuté plus tard. Interprétation: Divise le programme en petit fragments (représentants des éléments de syntaxe). Une boucle traduit et exécute immédiatement les fragments. CSI 3525, Évaluation et Implémentation, page 29

Modèles d implémentation(2) La compilation pure et l interprétation pure sont peu utilisées. L implémentation des langages de programmation utilise souvent un mélange des deux. - exemple: Java est compilé en «bytecode», qui est par la suite interprété. On désigne un processeur de langage comme interpréteur s il ressemble plus à un interpréteur qu à un compilateur, dans le cas contraire il est considéré comme un compilateur. CSI 3525, Évaluation et Implémentation, page 30

Modèles d implémentation(3) Certain langages se prêtent mieux à l interprétation, par exemple Prolog et Lisp qui sont utilisés 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é. CSI 3525, Évaluation et Implémentation, page 31

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