Langages et paradigmes
Olivier Lecarme
Master d’Informatique, première année
2007–2008
Modèles de programmation
Septième partie VII
Modèles de programmation
Langages et paradigmes 282/318
Modèles de programmation
Introduction
Généralités
Introduction
IGénéralités
ILe modèle impératif ou constructif domine largement les langages
de programmation, spécialement dans le monde industriel et
commercial.
ILes modèles fonctionnel et logique occupent cependant des
niches solides et ont des implémentations de qualité industrielle.
Langages et paradigmes 283/318
Modèles de programmation
Introduction
Généralités
généralités
ITout ce qui concerne les noms, portées et visibilité, ainsi que le
typage, les expressions, la récursivité, est commun à la plupart
des modèles.
ILes frontières entre les différentes catégories sont souvent
floues :
Iénoncés impératifs dans les langages qui ne le sont pas
Iprogrammation fonctionnelle dans les langages impératifs
Iexistence de langages multi-paradigmes
Ilangages hybrides tels que Icon
Langages et paradigmes 284/318
Modèles de programmation
Introduction
Généralités
généralités
INous avons déjà vu des concepts importants pour les langages
fonctionnels :
Ipolymorphisme
Iportée dynamique
Irécursivité comme mécanisme d’itération
Iutilisation intensive de listes
Ibeaucoup d’allocation dynamique et nécessité d’un récupérateur
de mémoire
IBeaucoup moins de présentation de concepts pour la
programmation en logique, qui a vingt ans de moins que la
programmation fonctionnelle.
Langages et paradigmes 285/318
Modèles de programmation
Introduction
Historique
Historique
ILes modèles impératif et fonctionnel proviennent des modèles de
calcul de mathématiciens dans les années 30 :
IAlan Turing propose un modèle de calcul opérationnel, la machine
de Turing, sorte d’automate à pile disposant d’une mémoire
linéaire de capacité illimitée.
IAlonzo Church propose un modèle de calcul fonctionnel, le
lambda-calcul, qui s’appuie sur des expressions paramétrées et la
substitution des paramètres.
Langages et paradigmes 286/318
Modèles de programmation
Introduction
Historique
historique
Ideux autres modèles encore :
IA. A. Markov propose un modèle de calcul algorithmique, les
algorithmes de Markov, qui s’appuient sur la substitution de
caractères dans des chaînes à l’aide de règles extrêmement
simples et strictes.
IStephen Kleene et Emil Post proposent des modèles beaucoup
plus abstraits qui ne conduisent pas à des implémentations.
IIl a été démontré que tous ces modèles sont équivalents.
Langages et paradigmes 287/318
Modèles de programmation
Introduction
Historique
historique
ILe but est de formaliser le concept de fonction calculable. Cela
permet de distinguer formellement deux mécanismes de
démonstration :
Idémonstration constructive, qui montre comment obtenir l’objet
désiré (un programme est une démonstration constructive de
l’existence de ce qu’il calcule)
Idémonstration non-constructive, qui montre simplement que
l’objet doit exister
Langages et paradigmes 288/318
Modèles de programmation
Introduction
Historique
historique
ILes langages de programmation actuels proviennent de ces
modèles :
Imachine de Turing pour la plupart des langages impératifs
Ilambda-calcul pour les langages fonctionnels
Ialgorithmes de Markov pour Snobol et un peu Icon
ILe modèle logique est lié à l’idée de démonstration constructive,
mais de manière plus abstraite :
Ion écrit un ensemble d’axiomes
Il’ordinateur découvre une démonstration constructive d’un
ensemble particulier de valeurs qui satisfont les axiomes pour un
ensemble de données
Langages et paradigmes 289/318
Modèles de programmation
Introduction
Exemple
Exemple
IOn veut calculer le PGCD des valeurs et .
IEn programmation impérative :
Vérifier si . Si oui, imprimer l’un des deux et
terminer. Sinon, remplacer le plus grand par leur
différence et recommencer.
IEn programmation fonctionnelle :
Le PGCD de et est défini comme étant si
, ou sinon comme étant le PGCD de et , où est le
minimum de et et est leur différence.
Langages et paradigmes 290/318
1 / 19 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !