Cours de Programmation fonctionnelle et logique
19.04.2000
Chapitre 1 : Introduction générale
Lisp : c'est un langage de programmation inventé au MIT par John MAC Carty et Coll (1960),
c'est aussi ancien que le fortran.
Il existe 3 grandes familles:
- MAC LISP (MIT) Le Lisp de Franz Lisp
- INTER LISP (Xerox: Pala Alto)
- Commun Lisp (futur standard MIT) à donner Scheme
On travaillera sous:
- Dr Scheme
- Scheme du MIT
Auteur : Steele, Abelson, Sussman
Il existe aussi Open Scheme (MAC)
Différence entre Scheme et les autres Lisp
Portée statique (lexicale) des variables (liaisons lexicale) en opposition à dynamique
Notion d'environnement
On peut utiliser les programmes (comme données) en entrée et en sortie à d'autres
programmes, grâce au lambda calcul (-calcul)
Classification rapide des langages de programmation :
Langages fonctionnels ( Lisp, Scheme : non typé, ML, CAML: très fortement typé)
Pas d'effet de bord sauf pour les E/S
On y programme essentiellement par opposition de fonction (Un programme = un ensemble de
fonctions, sans fonction principale) les informations circulant entre les programmes par
l'intermédiaire des paramètres des fonctions.
Langages applicatifs (?Cobol, SQL)
Programmation fonctionnelle sans variable
Langages impératifs
On programme avec les instructions qui agissent par effet de bord en modifiant le contenu de
la mémoire.
Langages logiques (relationnels) Prolog, Datalog
Langages orientés objets (Small talk, ……, C++, Java)
Remarque :
2 grandes approche dans la programmation
Une approche "impérative" (opérationnelle) totalement déterministe, où l'on décrit à la machine,
exactement ce qu'elle doit faire (un programme = suite d'instruction à exécuter par la machine)
Une approche déclarative, totalement non déterministe : on décrit à la machine ce que l'on veut
qu'elle calcule (c'est à elle de trouver l'algo) des langages s'en approche Prolog, CAML, Lisp
Les langages impératifs au départ été voué au calcul numérique opposé au calcul symbolique.