Université Kasdi Merbah Ouargla. Master informatique académique Février 2013

Documents pareils
Évaluation et implémentation des langages

Éléments de programmation et introduction à Java

Cours de Programmation 2

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Machines virtuelles Cours 1 : Introduction

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

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

Cours 1 : La compilation

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

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

Université de Bangui. Modélisons en UML

Programmation. fonctionnelle, impérative, logique et orientée objet

Cours d Algorithmique et de Langage C v 3.0

Traduction des Langages : Le Compilateur Micro Java

Le génie logiciel. maintenance de logiciels.

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

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Cours Composant 2. Qualité logicielle et spécications algébriques

Les diagrammes de modélisation

ALGORITHMIQUE ET PROGRAMMATION En C

Formula Negator, Outil de négation de formule.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

M Études et développement informatique

Vérification formelle de la plate-forme Java Card

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

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

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

Rappel sur les bases de données

Logiciel Libre Cours 2 Fondements: Programmation

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

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

Cours 1 : Qu est-ce que la programmation?

TP1 : Initiation à Java et Eclipse

Sciences de Gestion Spécialité : SYSTÈMES D INFORMATION DE GESTION

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

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

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

Préparation à l examen EFA en Macro

Théorie de la Programmation

GOL502 Industries de services

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

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)

Informatique Machines à calculer en théorie et en pratique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Les Langages Informatiques

Chapitre VI- La validation de la composition.

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Intelligence Artificielle Planification

Chapitre 2. Classes et objets

Cours Informatique Master STEP

Utilisation des tableaux sémantiques dans les logiques de description

IFT2255 : Génie logiciel

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

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

Chapitre I Notions de base et outils de travail

Présentation du PL/SQL

Chapitre I : le langage UML et le processus unifié

as Architecture des Systèmes d Information

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Projet Active Object

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

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

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

Chapitre 2. Eléments pour comprendre un énoncé

Initiation à l algorithmique


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

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

La technologie Java Card TM

Conception des systèmes répartis

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Conception des bases de données : Modèle Entité-Association

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

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Chapitre 1 : Introduction aux bases de données

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

RTDS G3. Emmanuel Gaudin

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

Table des matières Sources

Présentation du langage et premières fonctions

BES WEBDEVELOPER ACTIVITÉ RÔLE

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

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

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

OASIS Date de publication

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm)

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

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

Information utiles. webpage : Google+ : digiusto/

Java 1.5 : principales nouveautés

Patrons de Conception (Design Patterns)

Principes des langages de programmation INF 321. Eric Goubault

Transcription:

Sémantique formelle des langages de programmation Université Kasdi Merbah Ouargla Département Mathématique et informatique Introduction et notions générales sur les langages de programmation et les logiciels Master informatique académique Février 2013 1

Chapitre 1 : Introduction et notions générales 1. Le logiciel Caractéristique d un logiciel Qualités exigées d un logiciel Approches nouvelles de programmation 2. Les langages de programmation La programmation Le langage de programmation comme application Description des langages de programmation Syntaxe formelle Sémantique formelle Approches de programmation paradigme de programmation 3. Compilation /Interprétation 2

1- Le logiciel Caractéristique d un logiciel Un logiciel : un ensemble de programmes et de règles relatives à un traitement de l information. un logiciel est considéré comme un produit manufacturé (cad astreint aux exigences de tout produit): qualité, coût et délai de réalisation. Génie logiciel (ingénierie de logiciel) : adopter une démarche qui consiste à étudier certaines contraintes «en particulier au niveau des langages de programmation» qui rendent la production du logiciel moins cher et plus fiable. 3

Qualités exigés d un logiciel I Elles sont liés aux éléments supportés par le langage de programmation : Facilité d expression, de lisibilité, et de compréhension Maintenance aisée et moins coûteuse «importance économique, coût de la maintenance 75%» Réutilisation «avec ou sans modification» Efficacité des codes obtenus : capacité des codes, rapidité d exécution, compilation séparée (module). 4

Qualités exigés d un logiciel II Utilisation de peu de ressources ( peu de place mémoire et du temps de calcul) Fiabilité : abstraction + encapsulation (protection de données), typage Robustesse : protection et gestion des anomalies, exécution sans faille pendant une certaine durée Portabilité : utilisation de langages universels, multiplateforme, langages intermédiaire pour les compilateurs (bytecode java) 5

Approches nouvelles de programmation Toutes ces exigences sont à l origine de l apparition de : Nouvelles approches de programmation Nouveaux paradigmes de programmation Des approches de sémantique formelle des programmes et des langages de programmation Concepts moderne de programmation 6

2- Les langages de programmation La programmation : un processus intellectuel complexe (une des branches les plus difficiles des mathématiques appliquées d après Dijsktra). Pour programmer on utilise des langages de programmation. Un langage de programmation : est une abstraction des opérations réalisable sur un ordinateur. Avant 1960 : la programmation est l étape la plus difficile du cycle de vie d un programme, programmer c est apprendre un langage de programmation. Après 1960 Crise de logiciel Enormes coûts associés à la programmation (manque d outils efficaces) Echecs spectaculaires dans de très grands projets Depuis Dijkstra, il y avait Wirth, Parnas, Liskov, Hoare qui n ont cessé de développer une théorie de programmation. 7

Le langage de programmation comme application Un langage de programmation est une application orientée vers un grand public de développeurs leur servant d outil pour : s exprimer facilement. structurer ses idées. apprendre de nouveaux langages de programmation. Elle est classifiée : selon le paradigme : (déclaratif, impératif, logique) selon la spécification : (bases de données, problèmes mathématiques). selon le champ d application : (Administration et application commerciale, ingénierie, calculs scientifiques). 8

Description des langages de programmation I Les langages de programmation sont décrits en termes de : i. Syntaxe formelle : elle concerne la «forme» et la structure des expressions pouvant être construites à l aide de langage ( exemple : Forme Normale de BACKUS). La syntaxe d un langage de programmation définit l ensemble des règles qui sont admissibles et elle est définie par une ii. grammaire. Sémantique formelle : la sémantique concerne l aspect sens et signification à attribuer aux constructions linguistiques qu offre le langage. Cet aspect souvent exprimé de manière informelle via le langage pose un problème d ambiguïté, d inconsistance et d incomplétude (problème de fiabilité ). 9

Sémantique formelle statique et dynamique sémantique : décrit ce qui se passe lorsqu'on compile et qu'on exécute un programme. En général de manière informelle mais également de manière formelle. Deux types de sémantique formelle statique et dynamique : La sémantique statique modélise les vérifications qui sont effectués à la compilation d'un programme. Par exemple : la vérification de types ou l'inférence de types (une expression représentant le test d'une instruction conditionnelle ou d'une boucle doit être de type booléen), un identificateur ne peut pas être déclaré deux fois, Un nombre entier ne commence par des zéros La sémantique dynamique modélise ce qui se passe à l'exécution des programmes. 10

Sémantique formelle dynamique La sémantique formelle dynamique comprend trois approches complémentaires : Sémantique opérationnelle. Sémantique dénotationnelle. Sémantique axiomatique 11

Sémantique opérationnelle exprime le comportement exact de la machine lors de l exécution d un programme, elle est orientée développeur de compilateur (ou interpréteur) Principe : elle est donnée de manière implicite ou explicite par référence à une machine spécifique «souvent virtuelle ou abstraite» - elle définit pour chaque construction du langage de programmation, comment cette construction est exécutée. - C est une sorte de machine abstraite qui manipule directement les termes du langages (plutôt que du code machine) - pour un langage impératif, une machine abstraite définit l'effet sur la mémoire de chaque type d'instruction. - pour un langage fonctionnel, une machine abstraite définit pour chaque type d'expression sa valeur. 12

Sémantique dénotationnelle c est une traduction des expressions du langage en un ensemble de dénotations sous forme de constantes ou des fonctions mathématiques, donc : Elle est orientée concepteurs de langages de programmation. Principe : une structure mathématique choisie comme formalisme. - elle utilise une fonction d évaluation qui est une correspondance entre le programme et les éléments du modèle (associe les éléments du langages à ces constantes et fonctions). - elle offre une vision plus abstraite - on s'intéresse à ce que calcule le programme, mais pas à comment il le calcule 13

Sémantique axiomatique un ensemble d axiomes qui expriment les propriétés du langage, donc : elle est orientée programmeurs : vérification de la correction des programmes écrits. Principe : souvent basée sur la logique ( FLOYD, HOARE). Dans le cas d'un langage impératif (comme FORTRAN), ce type de sémantique permettra de montrer des formules de la forme : {P} programme {Q} Cette formule veut dire que pour tout état de la mémoire qui vérifie la propriété P (appelée précondition), alors après l'exécution du programme programme, l état de la mémoire verifiera la propriete Q (appelée postcondition). La correction est ici partielle, car on ne dit rien sur le fait que le programme termine ou pas. 14

Approches de programmation I Approche impérative : basée sur le concept d affectation et du séquencement des instructions à l aide de structures de contrôle (notion d état modifiable) «Langages impératifs: Pascal, Fortran, C, ada, Java,...» L exécution d un programme : un ensemble d états Etats initiaux états finaux ou résultats On parle d un automate d états finis ou un système de transition d états Approche déclarative : absence de séquencement explicite et d affectation, le programme décrit ce qui doit être calculé sans décrire explicitement comment se fait cette résolution (dépendance des données). Langages fonctionnels (évaluation de fonctions) : Lisp, Caml, Scheme. Langages logiques (basé sur le calcul de prédicats) : Prolog. 15

Approches de programmation II Dirigée par les traitements : un programme = un algorithme + structure de données. Approche classique : découper le problème à résoudre en modules. Dirigée par les données : on commence par identifier les objets (regrouper les données et les opérations qui s appliquent sur ces données dans des entités). un programme = un ensemble d objets en interaction 16

paradigme de programmation I un paradigme est une façon d aborder un problème de programmation à l aide d un type de langage qui supporte bien certains mécanismes d abstraction. Exemples de paradigme des langages de programmation : 1. Impératifs (axés sur l affectation) : le programme est constitué d une suite d énoncés exécutés séquentiellement qui décrivent comment réaliser l objectif. Exemple : Ada, Pascal, ALGOL, FORTRAN, COBOL, MODULA, C. 2. fonctionnels : le programme est vu comme une transformation de données à fin d obtenir la sortie désirée. Exemple: Lisp, ML, HOPE, MIRANDA, Haskell, KP. 17

paradigme de programmation II 3. logiques (basés sur la preuve des formules) : le programme décrit les propriétés de la solution recherchée, et un mécanisme d inférence propose des solutions. Exemple : Prolog, Godel. 4. orienté objet (basés sur l héritage) : le programme se décompose en un ensemble d objets inter agissants entre eux par l échange de messages. Exemple : SIMULA, Smaltalk, C++, Eiffel, Java. 5. Concurrent : le programme autorise la répartition des tâches à accomplir en un ensemble de plusieurs processus asynchrones pouvant s exécuter en parallèle. Exemple : Ada 95 ; les données peuvent être partagées ou non. 18

3- Compilation /Interprétation Compilation : Traduit un programme écrit dans un langage L1 en programme écrit en L2 (C vers langage machine ou assembleur par exemple) Exécution : assembleurs, chargeur éditeur de lien, lanceur. Un programme compilé s exécute plus rapidement, surtout si il y a prise en compte des spécificités matérielles. La compilation (statique) peut consacrer du temps à l analyse de code et à l optimisation. Les langages compilés (pour réaliser des logiciels comme produits finis) sont des langages évolués comme Pascal, C++, Les langages machines (code fastidieux) Les langages d assemblage (très proche des langages machines) ou symbolique - exécution rapide + maintenant approche fausse (moins utilisée) 19

3- Compilation /Interprétation Interprétation : combinaison de la traduction et de l exécution Les programmes interprétés sont généralement plus petits en taille, Les programmes interprétés sont plus portables, L interpréteur peut avoir accès à des informations "à l exécution" (run time). Les langages interprétés facilitent le protypage et la mise au point. Compilation dynamique : JIT (Just In Time) combine l interprétation et la compilation. 20