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 dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013.

Présentations similaires


Présentation au sujet: "Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013."— Transcription de la présentation:

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

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

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

4 Avoir une vision logique unifiée des événements à traiter – événements dIHM chez le client – événements provenant de services – événements provenant dobjets 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 à lhypothèse synchrone 21/05/ G. Berry, Collège de France Que veut dire orchestrer? Exactement lobjectif dEsterel, mais en plus ambitieux : intégration dans Hop, récursivité, dynamicité, client / serveur, etc.

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

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

7 ReactiveC, F. Boussinot : intégration dans C – successeurs : Junior (Java), SugarCubes, FunLoft, etc. 21/05/ G. Berry, Collège de France Précurseurs* 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 Esterel, Lustre, Signal – intégration dans lenvironnement non précisée Machines dexécution Esterel (C. André, D. Gaffé)

8 Status de présence / absence, unique à chaque instant (now& s) ;; expression Hop (pre& s) 21/05/ G. Berry, Collège de France Evénements HipHop (class HipHopEvent...) ;; similaire aux événements Esterel v7 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 +)))

9 21/05/ G. Berry, Collège de France HipHop Noyau : constructeurs dAST 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

10 21/05/ G. Berry, Collège de France 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 lAST de sustain&

11 21/05/201311G. Berry, Collège de France (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 !

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

13 21/05/ G. Berry, Collège de France 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)))))

14 21/05/ G. Berry, Collège de France 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

15 21/05/ G. Berry, Collège de France 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 linstruction dynamiquement au moment même de la réaction

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

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

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

19 21/05/ G. Berry, Collège de France Machines dexécution - entrées Stratégies de gestion des entrées entre deux réactions 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) A B :: int X Y :: int M P& : code HipHop A Bval& B XYval& Y

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

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


Télécharger ppt "Orchestration dactivités Web avec HipHop Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 7, 28 mai 2013."

Présentations similaires


Annonces Google