PRM prmc. Un langage de programmation et un compilateur

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

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

BES WEBDEVELOPER ACTIVITÉ RÔLE

Objets et Programmation. origine des langages orientés-objet


1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours de Programmation 2

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Quelques éléments de compilation en C et makefiles

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Présentation du PL/SQL

Introduction au langage C

Analyse de sécurité de logiciels système par typage statique

Traduction des Langages : Le Compilateur Micro Java

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

Classes et Objets en Ocaml.

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Annexe : La Programmation Informatique

PG208, Projet n 3 : Serveur HTTP évolué

Chapitre I : le langage UML et le processus unifié

L informatique en BCPST

Cours Informatique Master STEP

Cours 1 : Qu est-ce que la programmation?

TP1 : Initiation à Java et Eclipse

Quatrième partie IV. Test. Test 15 février / 71

Cours 1 : La compilation

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Programmes des classes préparatoires aux Grandes Ecoles

Évaluation et implémentation des langages

Utiliser Java sans BlueJ

Logiciel Libre Cours 2 Fondements: Programmation

Introduction à NetCDF

Programmation C++ (débutant)/instructions for, while et do...while

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

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

as Architecture des Systèmes d Information

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

ACTIVITÉ DE PROGRAMMATION

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

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

Gestion mémoire et Représentation intermédiaire

IFT2255 : Génie logiciel

Algorithme. Table des matières

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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)

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Formation, Audit, Conseil, Développement, UX WinRT Silverlight WPF Android Windows Phone

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Je catalogue, tu FRBRises, il/elle googlise. L évolution des catalogues et les bibliothécaires Vendredi 29 mars 2013 Manufacture des tabacs

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chapitre VI- La validation de la composition.

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

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

Chapitre 5 : Les procédures stockées PL/SQL

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

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

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

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

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Brique BDL Gestion de Projet Logiciel

Chapitre 10 Arithmétique réelle

Bases de programmation. Cours 5. Structurer les données

Machines virtuelles Cours 1 : Introduction

CORBA haute performance

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Génie Logiciel avec Ada. 4 février 2013

TP1 : Initiation à Java et Eclipse

Cours d Algorithmique et de Langage C v 3.0

PHP. Performances. Audit et optimisation LAMP. Julien Pauli. Cyril Pierre de Geyer. Guillaume Plessis. Préface d Armel Fauveau

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Une introduction à Java

Java 1.5 : principales nouveautés

Corrigé des TD 1 à 5

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Définitions. Numéro à préciser. (Durée : )

Les BRMS Business Rules Management System. Groupe GENITECH

Compilation (INF 564)

Conception de circuits numériques et architecture des ordinateurs

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

Concevoir sa stratégie de recherche d information

Plan du cours. Historique du langage Nouveautés de Java 7

Introduction à MATLAB R

Méthodes de développement. Analyse des exigences (spécification)

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

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

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

1. Structure d'un programme FORTRAN 95

Initiation. àl algorithmique et à la programmation. en C

MATHÉMATIQUES ET SCIENCES HUMAINES

Enseigner les Lettres avec les TICE

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Ordonnancement temps réel

Gé nié Logiciél Livré Blanc

Transcription:

PRM, prmc Un langage de programmation et un compilateur LIRMM Informatique Doctiss 06 Journée des doctorants de l I2S 13 avril 2006

1 Introduction 2 Le langage PRM Programmation, Raffinement, Modules 3 séparée et globale Le compilateur prmc Performances 4

Problématique principale Problème de communication? Bonjour! 0110010? Deux côtés du développement de logiciels Humain langages de programmation PRM Machine compilation prmc

Langage de programmation Le langage PRM Programmation, Raffinement, Modules Définition large Un système de codage permettant d écrire un programme Plus de 8000 langages de programmation! Plus précisément Syntaxe Vocabulaire + Grammaire Sémantique Abstractions exprimables + Signification Code source Le texte d un programme rédigé dans un langage de programmation

Exemple de code source Le langage PRM Programmation, Raffinement, Modules Factorielle en PRM print("nombre : ") let n := gets.to i let r := 1 while n > 1 do r := r * n n := n - 1 end print(n, "! = ", r)

L homme et la machine Le langage PRM Programmation, Raffinement, Modules Langage de programmation = Interface Mode de pensée humain Langage de programmation Mode de fonctionnement de la machine Idée programmation code source compilation Exécution Développeur (Humain) Ordinateur (Machine)

Le langage PRM Programmation, Raffinement, Modules Un bon langage de programmation Qualités d ingénierie des logiciels Facilite l écriture de programmes de qualité Conformité, Fiabilité, Efficacité, etc. Maintenabilité, Réutilisabilité, etc. Qualités intuitives de représentation Proche du mode de pensée humain Le programmeur s exprime facilement Non corrompu par l implémentation

Le langage PRM Programmation, Raffinement, Modules Historique Simula 1967, Smalltalk 1973 C++ 1980, Eiffel 1985 Ruby 1993, Java 1995, C# 2001 Paradigme actuellement dominant Bon paradigme Qualités d ingénierie des logiciels Qualités intuitives de représentation

Le paradigme objet Le langage PRM Programmation, Raffinement, Modules 4 notions originales Objet Abstraction unique qui encapsule données + traitements Classe Regroupe les objets + factorise les propriétés communes Envoi de message L objet décide de son comportement Héritage Une classe hérite les propriétés des classes qu elle spécialise

Le langage PRM Introduction Le langage PRM Programmation, Raffinement, Modules Caractéristiques principales Langage à objets Statiquement typé (comme C++ ou Java) Aucune concession à l implémentation Concepts et syntaxe Concepts Simples, cohérents et intuitifs Syntaxe Claire, Rigoureuse et concise Facile à apprendre Agréable à utiliser

Le langage PRM Programmation, Raffinement, Modules Comparaison des langages à objets Quelques caractéristiques PRM C++ Eiffel Java Ruby Héritage multiple Oui Oui Oui Non Non Tout est objet Oui Non Oui Non Oui Itérateurs automatiques Oui Non Non Oui Oui Généricité bornée Oui Non Oui Oui Typage covariant Oui Non Oui Non

Modules Introduction Le langage PRM Programmation, Raffinement, Modules Besoin de modularité Un programme est un système complexe (OO.org > 10 000 000 lignes de code) Diviser pour régner Modularité Un programme est décomposé en modules Un module contient des classes Un module correspond à une préoccupation Un module dépend d autres modules Un module importe les classes des modules dont il dépend

Raffinement de classe Le langage PRM Programmation, Raffinement, Modules Besoin Modification de classes sans toucher au code source Code partagé ou indisponible Variations d un programme Principe Un module peut raffiner les classes importées Idée de définition incrémentale L ordre des raffinements est déduit de l ordre des modules

séparée et globale Le compilateur prmc Performances 1 Introduction 2 Le langage PRM Programmation, Raffinement, Modules 3 séparée et globale Le compilateur prmc Performances 4

Introduction séparée et globale Le compilateur prmc Performances Définitions Compiler Traduire le code source d un programme vers le langage machine Exécutable Forme résultante d un programme après compilation Compilateur Programme qui prend en donnée un source et produit un exécutable efficace Plusieurs traductions possibles Langage proche de la machine facile à compiler

séparée (1) séparée et globale Le compilateur prmc Performances Besoin La compilation est un processus complexe (OO.org 8h) Diviser pour régner Principe code source code source source du programme compilation compilation code binaire code binaire édition de liens code binaire exécutable Module compilé indépendamment de l utilisation finale Exécutable construit en liant les modules compilés

séparée (2) séparée et globale Le compilateur prmc Performances Avantages Petite modification de source petite recompilation Module compilé une fois même si celui-ci est partagé Un module compilé est distribuable

globale séparée et globale Le compilateur prmc Performances Idée Profiter de la connaissance globale d un programme pour le compiler efficacement Compiler un programme d un coup Produire du code machine spécifique et efficace Inconvénients N a pas les avantages de la compilation séparée Utilisation marginale dans l industrie

Le compilateur prmc séparée et globale Le compilateur prmc Performances Problématique Respecter l approche modulaire de PRM Être efficace malgré les abstractions de haut niveau Solution Intégrer des techniques d implémentation globales dans un schéma de compilation séparée

séparée et globale Le compilateur prmc Performances Techniques globales en compilation séparée (1) Principe Appliquer les techniques globales dès que la totalité du programme est connu c-à-d à l édition de liens code source code source source du programme compilation compilation code binaire code binaire édition de liens code binaire exécutable

séparée et globale Le compilateur prmc Performances Techniques globales en compilation séparée (2) Problème Le code source n est plus disponible Les modules sont déjà compilés Solution (aperçu) Lors de la compilation de chaque module : Ajouter de méta-informations Prévoir des trous dans le code binaire

Performances Introduction séparée et globale Le compilateur prmc Performances Comparaison de trois compilateurs Temps (s) 11 10 9 8 7 6 5 4 3 2 1 g++ smarteiffel prmc 0 5 10 15 20 25 30 35 Nombre de réponses potentielles par envoi de message

Introduction Work in progress PRM et prmc encore en développement Une version stable pour cet été? Perspectives Langage Traits supplémentaires : multi-méthodes, contrats... Bibliothèque Base de données, cgi, interface graphique... Compilateur Plus de techniques globales...

Questions? http://www.lirmm.fr/ privat/prm