Vous êtes sur la page 1sur 10

M1 IA

Module : Sémantique Formelle des langages de


programmation
Chapitre 01:

Notions générales sur les langages de


programmation & les logiciels
Sommaire

1. Logiciel

2. Les langages de programmation

3. Compilation / Interprétation
Chapitre 01 : Notions générales

1. Le Logiciel
Un logiciel est un ensemble de programmes et de règles relatives à un traitement se

l’information.

Caractéristique d’un logiciel :

Un logiciel est considéré comme un produit manufacturé, c.à.d. il doit répondre aux exigences

de tout produit (qualité, coût et délai de réalisation).

Le Génie logiciel (Ingénierie de logiciel) : adopter une démarche qui consiste à étudier

certaines contraintes (entre autres : au niveau des langages de programmation) qui rendent la

production du logiciel moins cher et plus fiable.

Qualités exigés d’un logiciel :

Les qualités liées aux éléments supportés par le langage de programmation :

Facilité d’expression, de lisibilité et de compréhension.

Maintenance aisée et moins couteuse (coût de la maintenance 75%.) .

Réutilisation (avec ou sans modification).


2
Chapitre 01 : Notions générales

Efficacité des codes obtenus : capacité des codes, rapidité d’exécution, compilation

séparée en module, … .

Utilisation de peu de ressources (peu de place mémoire et du temps de calcul).

Fiabilité : abstraction + encapsulation, 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.

Approches nouvelles de programmation :

Toutes ces exigence 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.


3
Chapitre 01 : Notions générales

2. Les langages de programmation

Programmation :

Est un processus intellectuel complexe.

Pour programmer, on utilise des langages de programmation.

Un langage de programmation est une abstraction des opérations réalisable sur un ordinateur.

Un langage de programmation se sert d’outil pour :

Exprimer facilement ce que doit faire un ordinateur.

Structurer les idées.

4
Chapitre 01 : Notions générales

Description ders langages de programmation

Les langages de programmation sont décrits en termes de :

a) Syntaxe formelle :
− Concerne la forme et la structure des expressions pouvant être construites à l’aide de

langage.

− La syntaxe d’un langage de programmation définit l’ensemble des règles qui sont

admissibles et elle est définie par une grammaire.

b) 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 naturel pose un

problème d’ambigüité, d’inconsistance et d’incomplétude ( i.e. problème de fiabilité).

5
Chapitre 01 : Notions générales

Sémantique formelle statique et dynamique

La sémantique décrit ce qui se passe lorsqu’on compile et exécute un programme.

En général, la sémantique est décrite de manière informelle, mais également de manière

formelle.

Il existe deux types de sémantique formelle :

a) La sémantique statique :
− Modélise les vérifications qui sont effectués à la compilation d’un programme, tels que :

La vérification de type ou l’inférence de type.

Un identificateur ne peut pas être déclaré deux fois.

Un nombre entier ne commence pas par des zéros.

b) La sémantique dynamique :
− Modélise ce qui se passe à l’exécution des programmes.

6
Chapitre 01 : Notions générales

Approche de programmation

a) Approche impérative :
Basée sur le concept d’affectation et du séquencement des instructions à l’aide de structures

de contrôles, c.à.d. notion d’états modifiables.

Exemple : Pascal, C, Java, … .

L’exécution d’un programme est un ensemble d’états : Etats initiaux ---> Etats Finaux(Résultat)

Il existe deux grandes classes de cette approche :

Dirigée par les traitements :

Un programme = Un Algorithme + Structure de données, c.à.d. 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.


7
Chapitre 01 : Notions générales

b) Approche déclarative :
Absence de séquencement explicite et de l’affectation.

Le programme décrit ce qui doit être calculé sans décrire explicitement comment se fait

cette résolution.

Exemple : Lisp, Camal, ML, Prolog, … .

Paradigme de programation

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.

1) Impératifs : (basé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 : Pascal, C, … .

2) Fonctionnels : le programme est vu comme une transformation de données afin d’obtenir la

sortie désirée.

Exemple : Lisp, ML, … .

8
Chapitre 01 : Notions générales

3) Logiques : (basée 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é Objets : (basée sur l’héritage) le programme se décompose en un ensemble d’objets

inter-agissants entre eux par échange de messages.

Exemple : C++, Java, … .

5) Concurrent : le programme autorise la répartition des taches à accomplir en un ensemble de

plusieurs processus pouvant s’exécuter rn parallèle.

Exemple : ADA 956, C++, Java, … .

9
Chapitre 01 : Notions générales

3. Compilation/ Interprétation
Compilation : traduit un programme écrit dans un langage L1 en un programme écrit en L2 ( C
vers le langage machine par exemple) avant son exécution.

Remarque

− Un programme compilé s’exécute plus rapidement. La compilation consacre plus du temps à

l’analyse de code et à l’optimisation.

Interprétation : combinaison de la traduction et de l’exécution.

Remarque

− Les programmes interprétés sont généralement de petites tailles et plus portables.

Compilation dynamique JIT (Just In Time) : Combine l’interprétation et la compilation.

10