Cour Scheme
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é