Vendredi 24 Février


Retour à la vue des calendrier
Vendredi 24 Février
Heure: 11:00 - 12:30
Lieu: Salle B107, bâtiment B, Université de Villetaneuse
Résumé: Expérimenter un modèle de programmation fonctionnel, réactif et concurrent (à environnement global) compositionnel en OCaml.
Description: Jean-Vincent Loddo Note: Il s'agit d'un groupe de travail informel et non d'une présentation.


Abstract:
OCaml est un langage nativement multi-paradigme, permettant un style de programmation fonctionnel, impératif et objet. Une librairie de processus légers (threads), fournie avec le langage et s'appuyant sur le système d'exploitation sous-jacent, permet d'ajouter à la liste précédente le style de programmation concurrent à mémoire partagée (ou environnement "global"). Or, cette variante du style concurrent paraît tellement difficile et source d'erreurs ("race conditions", "deadlocks", "resource starvation") qu'elle est souvent réputée impraticable. Ce constat a probablement influencé la recherche sur les paradigmes concurrents, qui s'est orientée, depuis la fin des années '70 et début '80, sur le modèle opposé des algèbres de processus, c'est-à-dire à environnement "local" ou échange de messages (CSP de Hoare 1985, CCS de Milner 1989, LOTOS ISO 1985). L'intérêt soulevé par les mémoires transactionnelles à partir des années 2000, témoigne toutefois d'un retour à la mode de l'environnement global dans un cadre de programmation multi-thread.

Entre-temps, un autre style de programmation, très adapté aux programmes interactifs et typiquement avec interface graphique, le style "réactif" (ou programmation événementielle) a fait brèche dans la culture des programmeurs et le support de ce style est offert dans un nombre grandissant de langages "mainstream", impératifs ou fonctionnels.

Tout cela peut s'ajouter et se combiner à l'ancienne notion de "promesse" ("future") proposée comme mécanisme de synchronisation de programmes hybrides fonctionnels-concurrents (Friedman & Wise 1976, Baker & Hewitt 1977).

Dans cet exposé nous présenterons une tentative de synthèse des styles fonctionnel, réactif et concurrent à environnement global, qui soit compositionnelle, c'est-à-dire permettant de composer des éléments modulaires. Cette solution, qui prend la forme contingente d'une librairie OCaml, a été inspirée par l'implémentation courante du logiciel Marionnet (simulateur de réseaux TCP/IP) et devrait, à terme, permettre la ré-implantation d'une partie critique du code.