Participants : Frédéric
Boussinot, Jean-Ferdy Susini.
Mots clés : réactif, objet, script,
parallélisme, événement, World Wide Web, Reactive-C, Java,
SugarCubes, Icobj, Junior, distribution, migration .
Résumé :
L'approche réactive a pour but d'étudier divers modèles
de programmation dans lesquels existe une horloge logique
définissant des instants globaux. Elle a également pour
objectif d'implémenter des langages de programmation
construits sur ces modèles.
Le traitement de la concurrence dans les langages de
programmation usuels reste très empirique et fondé sur des
concepts datés. Par exemple, Java propose les ``threads'' et
les verrous pour la gestion de la concurrence. Nos travaux
sur la programmation réactive, initiés avec le langage
Reactive-C en 1988, visent à ajouter aux langages existants
des primitives de programmation de haut niveau, fondées sur
les paradigmes de la programmation synchrone : notion
d'instant global, d'événement et de diffusion
instantanée.
Plusieurs langages et formalismes réactifs ont été définis
et implémentés en Reactive-C : réseaux de processus
réactifs, langage synchrone SL, objets réactifs. Ils sont
décrits dans un livre qui présente également Reactive-C en
détail [7]. L'approche réactive au dessus de Java
(plus particulièrement les SugarCubes) est décrite dans un
livre [11].
Les SugarCubes sont un ensemble de classes Java pour la
programmation réactive. Les SugarCubes proposent une
communication de haut niveau à base d'événements diffusés
instantanément, dans laquelle la réaction à l'absence est
reportée à l'instant suivant. Les Scripts Réactifs apportent
toute la souplesse de l'interprétation à l'approche réactive.
La présence des instants permet de définir une migration dans
des états cohérents des scripts réactifs à travers le réseau.
Nous avons implémenté en SugarCubes une version des scripts
réactifs au dessus de Java. L'objectif de la programmation
par Icobjs est de fournir une technique de programmation
entièrement graphique, à base de combinaisons de
comportements. Les comportements sont en fait des scripts
réactifs, combinés de différentes faÇons par des
manipulations d'icÔnes à l'écran.
Le formalisme Junior récemment introduit est un noyau de
primitives pour la programmation réactive au dessus de Java.
Junior est en quelque sorte le noyau des SugarCubes. Trois
objectifs ont motivé la création de ce formalisme : prendre
en compte le parallélisme asynchrone des systèmes distribués
; donner une sémantique formelle aux primitives réactives ;
enfin, réaliser des implémentations efficaces et supportant
un grand nombre d'événements diffusés. Nous avons récemment
défini Jr [25], une API pour Junior, qui permet de
masquer les diverses implementations que nous avons
realisees, en collaboration avec France Telecom R&D.
Nous avons commencé à appliquer la programmation réactive
à la conception de mondes virtuels, dans le cadre du projet
européen PING. Ce projet cible plus particulièrement les jeux
en réseau avec grand nombre de joueurs. Dans ce projet, nous
utilisons Junior et les Icobjs pour les comportements
d'objets virtuels.