Fermé pour inventaire : histoire et mécanique des « closures »

Présenté par Frédéric Cabestre.

2024

Horaire :

Salle : .

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 ?Pourquoi Rust s’en tire-t-il mieux que C ou C++ ? 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.