Fermé pour inventaire : histoire et mécanique des « closures »
Présenté par Frédéric Cabestre.
Horaire : 12h00–12h45
Salle : Pastel.
Catégorie : Langages de programmation
Niveau recommandé : Intermédiaire.
Résumé
En 1958 naissait LISP, un des tout premiers langages de programmation intégrant la notion de fonction anonyme, communément appelée « lambda ».
En 1970, une équipe du MIT ayant pour membre Guy L. Steele Jr. créait Scheme, une évolution de LISP munie entre autres de « closures ».
En 2007, Rich Hickey propose un dialecte de Scheme ciblant la JVM : Clojure.
En 2014, Java 8 intègre à son tour la notion de « lambda » qui dans les faits sont des « closures ».
Et dans l’intervalle bien des langages ont intégré des concepts similaires de manière plus ou moins élaborée (qui a dit « pointeur de fonctions » ?). En particulier les langages de programmation fonctionnels qui promeuvent l’usage intensif de fonctions d’ordre supérieur.
Mais au fait, quelle est la différence entre une lambda et une « fermeture » ? Qu’est-ce que cela implique en terme de compilation, de gestion mémoire ? Et quel est le rapport entre Guy L. Steele Jr et Java ?
Autant de questions auxquelles nous tenterons de répondre au cours de cette session.