Programmation Fonctionnelle
Une introduction
Erick Gallesio eg(@)unice.fr
SI4 – 2010-2011
Erick Gallesio eg(@)unice.fr () Programmation Fonctionnelle SI4 – 2010-2011 1 / 22
Introduction au cours "Programmation Fonctionnelle" (1)
Pourquoi un cours de programmation fonctionnelle?
Pourquoi Scheme?
Lisp
Scheme est un dialecte Lisp
petit langage
très utilisé dans l’enseignement
nombreux supports de cours (livres, Web)
nombreuses implémentations (Unix, Windows)
norme de fait (R6RS) + SRFI
R7RS en cours de finalisation
Erick Gallesio eg(@)unice.fr () Programmation Fonctionnelle SI4 – 2010-2011 2 / 22
Introduction au cours "Programmation Fonctionnelle" (2)
Scheme est un vieux langage, mais il est très utilisé
regain d’intérêt depuis quelques années
petit donc facilement "embarquable"
Langage de "glue"
Guile pour les projets de la FSF
Applications utilisant un Scheme/Lisp embarqué
Emacs
AutoCAD
GIMP
Gnumeric
...
Erick Gallesio eg(@)unice.fr () Programmation Fonctionnelle SI4 – 2010-2011 3 / 22
Introduction au cours "Programmation Fonctionnelle" (3)
Dicton poluplaire:
Those who do not understand Unix are condemned to reinvent it, poorly.
– Henry Spencer
La même chose est vraie pour Lisp (moi :-)
Java 1.0 (1997): Syntaxe C++ mais un GC + ...
Java 1.1 (1998): inner classes + ...
Java 1.2 (1998): Reflection, Collections + ...
Java 1.3 (2000): Java Platform Debugger Architecture + ...
Java 1.4 (2002): integrated XML parser and XSLT processor + ...
Java 5.0 (2004): for-each loop, generics, autoboxing and var-args + ...
Java 6.0 (2006): facilite l’utilisation de langages de scripts (javascript) + ...
Java 7.0 (2011?): amélioration diverses (plus les lambda)
Java 8.0 (????): lambda expressions (informally, "closures")
Erick Gallesio eg(@)unice.fr () Programmation Fonctionnelle SI4 – 2010-2011 4 / 22