La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Orchestration d’activités Web avec HipHop

Présentations similaires


Présentation au sujet: "Orchestration d’activités Web avec HipHop"— Transcription de la présentation:

1 Orchestration d’activités Web avec HipHop
Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013

2 G. Berry, Collège de France
21/05/2013

3 G. Berry, Collège de France
21/05/2013

4 Que veut dire orchestrer?
Avoir une vision logique unifiée des événements à traiter événements d’IHM chez le client événements provenant de services événements provenant d’objets sur le Web événements temporels événements engendrés par Hop Définir comment réagir au cours du temps à ces événements, en fonction de la mémoire des événements passés Eviter tous les problèmes de synchronisation de threads / event-listeners grâce à l’hypothèse synchrone Exactement l’objectif d’Esterel, mais en plus ambitieux : intégration dans Hop, récursivité, dynamicité, client / serveur, etc. G. Berry, Collège de France 21/05/2013

5 Méthode classique, Javascript / HOP
(add-event-listener! ev (lambda (e) ...)) seulement si idle ev risque d’interférence: listener dans listener si listener compliqué ev  (lambda (e) ...)) ... G. Berry, Collège de France 21/05/2013

6 L’approche synchrone machine réactive ev1 ev1   (lambda (x) ...))
1515 réaction décidée ! code réactif séquence, parallélisme, communication, préemption synchrone, en temps conceptuellement nul G. Berry, Collège de France 21/05/2013

7 Précurseurs* Esterel, Lustre, Signal
intégration dans l’environnement non précisée Machines d’exécution Esterel (C. André, D. Gaffé) ReactiveC, F. Boussinot : intégration dans C successeurs : Junior (Java), SugarCubes, FunLoft, etc. Reactive ML, L. Mandel : intégration dans CAML signaux comme valeurs de première classe récursivité, dynamicité, etc. Timed CCP, V. Saraswat : Intégration dans la programmation par contraintes parallèles contrôle beaucoup plus implicite *plus exactement : plagiats par anticipation G. Berry, Collège de France 21/05/2013

8 Evénements HipHop (class HipHopEvent ...) ;; similaire aux événements Esterel v7 Status de présence / absence, unique à chaque instant (now& s) ;; expression Hop (pre& s) valeur de type quelconque, unique à chaque instant (val& s) ;; expression Hop (preval& s) fonction de combinaison des valeurs émises simultanément (class CountEvent::HipHopEvent (status (default #f)) (init (default 0)) (op (default +))) G. Berry, Collège de France 21/05/2013

9 HipHop Noyau : constructeurs d’AST
stmt : (nothing&) 0 (emit& event hop*) ! s(v) (atom& hop) (pause&) 1 (if& hop stmt stmt) s ? p, q (seq& stmt+) p ; q (loop& stmt+) p* (par& stmt+) p | q (suspend& event stmt+) s  p (trap& trap-ident stmt+) { p } (exit& trap-ident) k, k  0 (local& (local-sig+) stmt+) s \ p G. Berry, Collège de France 21/05/2013

10 HipHop dérivé – définitions fonctionnelles
(halt&) (sustain& event hop) (await& [ :immediate bool ] delay stmt*) (abort& [ :immediate bool ] delay stmt+) (until& [ :immediate bool ] delay stmt+) ;; weak abort (loop-each& delay stmt+) (every& [ :immediate bool ] delay stmt+) (define (sustain& event . hop-list) (loop& (emit& (cons event hop-list) (pause&))) construit en HOP l’AST de sustain& G. Berry, Collège de France 21/05/2013

11 Vraie fonction, pas macro ! (define (repeat& N::int stmt)
;; declare a fresh private Hop counter (let ((count::int N)) ;; install a mark to exit after N steps (trap& end ;; reset the local counter (atom& (set! count 0)) ;; loop forever (loop& ;; execute the user stmt stmt ;; decrement the Hop counter (atom& (set! count (+fx count 1))) (if& (= count 0) ;; the end, escape from the loop (exit& end)))))) Vraie fonction, pas macro ! G. Berry, Collège de France 21/05/2013

12 ABRO paramétrique en HipHop
Emettre O dès que A et B sont arrivés Réinitialiser le comportement à chaque R // Esterel module module ABRO : input A, B, R; output O; loop { await A || await B }; emit O; each R end module ;; Hop function (define (ABRO& A B R O) (loop-each& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O))) G. Berry, Collège de France 21/05/2013

13 Variante de ABRO A partir du premier R,
émettre O dès que A et B sont arrivés arrêter tout si A et B en même temps (define (ABRObis& A B R O) (trap& Done (every& (now& R) (par& (await& (now& A)) (await& (now& B))) (emit& O) (if& (and (now& A) (now& B)) (exit& Done))))) G. Berry, Collège de France 21/05/2013

14 Modularité héritée de Hop
(let ((s (instantiate::HipHopEvent))) (par& (emitter& s) (receiver& s))) (define (emitter& s) ... (emit& s) ...) (define (receiver& s) ... (await& s) ...) s G. Berry, Collège de France 21/05/2013

15 Instructions calculées
(define (await-last-of-list& . sig-list) (par& (map await& sig-list))) (await-last-of-list& A B C) (par& (await& A) (await& B) (await& C)) Définition dynamique de comportements genpar&, dyngenpar& : calculer l’instruction dynamiquement au moment même de la réaction G. Berry, Collège de France 21/05/2013

16 Macro-définition de dyngenpar&
(define-macro (dyngenpar& bindings :when condition . body) (let ((genpar-id (gensym))) `(let ((genpar (lambda () (genpar& ,bindings (par& :id ,genpar-id (every& ,condition (hiphop-append-child! (current-machine) ,genpar-id (genpar)) (pause&)))))) G. Berry, Collège de France 21/05/2013

17 Machines d’exécution But : gère les événements d’entrée et de sortie
But : déclenche la réaction sur appel externe A B :: int M P& : code HipHop B val& B X Y :: int Y val& Y (define M (instantiate::HipHopMachine (program P&))) G. Berry, Collège de France 21/05/2013

18 Machines d’exécution – entrées
Appel de fonction hiphop-input! dans le code principal ou dans un event-handler A B :: int X Y :: int M P& : code HipHop B val& B Y val& Y (hiphop-input! M A) ... (hiphop-input! M B 1515) (hiphop-react!) (hiphop-input-and-react! M A) (hiphop-input-and-react! M B 1515) G. Berry, Collège de France 21/05/2013

19 Machines d’exécution - entrées
Stratégies de gestion des entrées entre deux réactions A B :: int X Y :: int M P& : code HipHop B val& B Y val& Y A  ARRÊT DEMANDÉ : un seul appui suffit à tourner le bit ... B  Toc : on compte les Toc Toc Toc Toc  (hiphop-input! M Toc 3) G. Berry, Collège de France 21/05/2013

20 Machines d’exécution Définition d’un event-listener pour chaque sortie
appelé par M si le signal est émis A B :: int X Y :: int M P& : code HipHop B val& B Y val& Y (hiphop-add-event-listener! M X (lambda () (action) )) (hiphop-add-event-listener! M Y (lambda (V) (action V) )) G. Berry, Collège de France 21/05/2013

21 Retour à Manuel Serrano
G. Berry, Collège de France 21/05/2013


Télécharger ppt "Orchestration d’activités Web avec HipHop"

Présentations similaires


Annonces Google