Sie sind auf Seite 1von 23

Types et langages de

programmation
Algorithmique et Programmation
Unisciel/K.Zampieri

1
Généalogie partielle des langages
de programmation
FORTRAN ALGOL60 LISP
COBOL
BASIC ML
PL/1 C SIMULA 67
PASCAL
SMALLTALK
PROLOG ADA C++
MODULA-2
JAVA

Plus de 4000 langages


2
Le choix d'un langage n'est pas
neutre
Y-a-t-il un langage
universel?
LISP

L'assembleur PASCAL
C

C++
JAVA Delphi

3
Le choix d'un langage n'est pas
neutre (2)
Un langage facilite la résolution de classes de problèmes :
• C : système d'exploitation (Unix/Linux)…
• C++ : applications de grande taille…
• JAVA, C# : applications de grande taille, web…
• LISP : prototypage, systèmes experts…

4
Paradigmes des langages évolués
(dits aussi de haut niveau)
• Désigner :
– Expliciter une entité en la nommant et en lui associant
une définition (au moins intuitive)
• Typer :
– Connaître les propriétés pertinentes d'une entité
• Paramétrer :
– Traiter un problème plus général que le problème posé
– Améliorer la résistance de la solution aux changements
– Réutiliser

5
Paradigmes des langages évolués
(dits aussi de haut niveau) (1b)
• Sérialiser :
– Construire des séquences d'actions
• Décomposer par cas :
– Découper le domaine des données initiales
• Itérer :
– Introduire un sous-problème intermédiaire paramétré

Réduire la complexité d'un problème

6
Les types de programmation
Application informatique : Mise en oeuvre des traitements
des données et des relations entre les deux.
Génération 1 : Programmation Spaghettis :
• Assembleur, Fortran I, Basic
• Logique de saut « goto ». Absence totale d'entités
autonomes et modifiables indépendamment du reste du
programme.
• Code et données étroitement imbriqués.

7
Les types de programmation (2)
Génération 2 : Programmation Structurée :
• Pascal, C, Algol, Perl, Python
• Expression séparée des données et des traitements.
• Modularité :
– Données typées. Possibilité de création de types complexes.
– Structures de contrôle remplaçant les sauts.
– Notion de sous-programmes et compilation séparée (entités
autonomes).

8
Les types de programmation (3)
Génération 3 : Programmation par Objets :
• Simula, SmallTalk, Eiffel, C++, Pascal objet, Java, C#
• Modularité qui regroupe les données et les traitements dans
une même entité appelée objet.
• Les objets peuvent être vus comme des tentatives de simuler
une situation réelle (objets « chronomètre », « voiture »). Les
objets réels ne sont ni des traitements purs, ni des données
pures mais une combinaison des deux.

9
Les types de programmation (4)
Programmation Structurée Programmation par Objets

Équation de WIRTH Équation de la POO


Algorithmes + SDD Méthodes + Données
= Programmes = Objets

Que doit faire le Sur quoi porte le


programme ? programme ?

10
Les types de programmation (5)
Programmation Structurée Programmation par Objets

Données Données Messages Données


Fonctions Objet

Hiérarchie des Hiérarchie des Hiérarchie des


fonctions données objets

11
Langage de programmation
Comment rendre des instructions
« sophistiquées » (de l'humain)
compréhensibles pour l'ordinateur
qui doit les exécuter ?

Réponse : En disposant d'un programme capable de


transformer une séquence d'instructions de haut
niveau (aussi appelée code source) en une séquence
d'instructions machine (aussi appelée code objet ou
binaire).
12
Langage de programmation (2)
Traducteur : programme qui convertit un programme
quelconque écrit dans un langage source en un programme
écrit dans un langage cible.
• Assembleur : traducteur de langage objet
• Compilateur : traducteur de langage source évolué

Interpréteur : programme qui traduit puis exécute un


programme quelconque écrit dans un langage source.

Langage de programmation : instructions et données de plus


haut niveau que le traducteur est capable de traiter.

13
Langage de programmation :
résumé
Un langage de programmation est
• un moyen formel permettant de
• décrire des traitements (i.e. des tâches à effectuer) sous
• la forme de programmes (i.e. de séquences d'instructions et
de données de « haut niveau », c.à.d. compréhensibles par le
programmeur) pour lesquels il existe
• un traducteur pour en permettre
• l'exécution effective par un ordinateur.

14
Compilateur
Compilateur (ou assembleur) :
• Traduit une seule fois les programmes dans leur ensemble :
tout le programme est fourni au compilateur pour la traduction
et son résultat (code objet) peut être soumis au processeur pour
traitement.
• Un langage de programmation pour lequel un compilateur est
disponible est appelé un langage compilé.

15
Langage compilé
Assembleur
Compilateur Editeur de liens
Chargeur
0x8048470 push %ebp
0x8048471 movl %esp, %ebp
0x8048473 pushl $0x80484dc
0x8048478 call 0x80483bc <printf>
0x8048480 addl $0x4, %esp
0x8048481 leave
0x8048481 ret

Programme source Programme cible Code machine

$ emacs monProg.cpp
$ gcc monProg.cpp –o monProg
$ ./monProg

16
Interpréteur
Interpréteur :
• Traduit les programmes instruction par instruction et soumet
chaque instruction traduite au processeur pour exécution.
• Un langage de programmation pour lequel un interpréteur est
disponible est appelé un langage interprété.

17
Langage interprété
Interpréteur
0x8048470 push %ebp
0x8048471 movl %esp, %ebp
0x8048473 pushl $0x80484dc
0x8048478 call 0x80483bc <printf>
0x8048480 addl $0x4, %esp
0x8048481 leave
0x8048481 ret

Programme source Code machine

$ emacs monProg.l
$ lisp monProg.l

18
Interpréteur v.s. Compilateur
Un langage interprété est adapté pour le développement rapide
et le prototypage :
• Cycle de test plus court qu'avec les langages compilés.
• Souvent possible de modifier/rectifier le programme en
cours d'exécution (test).
• Langages offrant une plus grande liberté d'écriture.

19
Interpréteur v.s. Compilateur (2)
Un langage compilé est préférable pour la réalisation
d'applications efficaces et/ou de grande envergure :
• Programme plus efficace : le compilateur peut effectuer des
optimisations plus facilement que l'interpréteur (puisqu'il
possède une visibilité globale sur le programme)
• Traduction une unique fois.
• Meilleure détection des erreurs : structuration plus
rigoureuse et typage.
• Protection de la propriété intellectuelle : la compilation
permet de diffuser les programmes sous forme binaire sans
en imposer sa diffusion sous forme lisible.
20
Interpréteur v.s. Compilateur (3)
Langages compilés, interprétés, semi-compilés :
• Certains langages (LISP par exemple) peuvent être
indifféremment interprété ou compilé ; d'autres ne sont que
compilé jamais interprété (C, C++, Pascal, ADA) ; certains
ne sont qu'interprété (Prolog).
• Certains sont semi-compilés (par exemple Java, V-Pascal)
: ils sont compilés en langage de type « assembleur »
(byte-code) puis traitée par une « machine virtuelle » qui
interprète le byte-code [l'idée sous-jacente est de rendre le
programme indépendant de la plateforme].

21
Compilation
• Analyse lexicale 1. position := initiale + vitesse * 60
• Analyse syntaxique 2. :=
position +
• Analyse sémantique initiale *
• Génération de code vitesse 60
3. empiler adresse de position
• Optimisation empiler valeur de initiale
empiler valeur de vitesse
empiler 60
*
+
:=

22
Compilation (2)
Note : Les aspects syntaxiques (règles d'écriture des
programmes) et sémantiques (définition des instructions)
d'un langage de programmation sont spécifiés de manière
précise dans un manuel de référence.
• Compilation : analyse syntaxique et traduction en binaire.
• Édition des liens : production du fichier exécutable.

23

Das könnte Ihnen auch gefallen