Orchestration d’activités Web avec HipHop

Slides:



Advertisements
Présentations similaires
Cours de l’OACI sur les Systèmes de Gestion de la Sécurité (SMS)
Advertisements

Chapitre annexe. Récursivité
Machines séquentielles
(Nom du fichier) - D1 - 01/03/2000 FTR&D/VERIMAG TAXYS : a tool for the Development and Verification of RT Systems a joint project between France Telecom.
Sémantique d'Esterel1 Sémantique dEsterel t, P b t, E t instruction au début de linstant t instruction à la fin de linstant P signaux présents E signaux.
Gestion des événements (suite)
Sensibilisation à l’Algorithmique
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
Calculs de complexité d'algorithmes
Synchronisation des processus père - fils
GEF 243B Programmation informatique appliquée Boucles §
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Liste générique dans Linux 2.6 Source : Understanding the Linux kernel Chap3 processes p.87.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Alexandre Cortier, Eric Morand
La conception de circuit synchrones en Esterel v7
La compilation matérielle et logicielle d’Esterel v5 /v7
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Faculté I&C, Claude Petitpierre, André Maurer 1 Systèmes multi-processus C. Petitpierre
OCaml - Les listes L3 MI.
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
Récursivité.
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Cours VHDL Chap 3: sémantique VHDL
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL
OCaml – Les arbres L3 MI.
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Algèbre de Boole et les Boucles
Les algorithmes: complexité et notation asymptotique
La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013.
La programmation objet Illustration de la POO en Pascal
1.2 COMPOSANTES DES VECTEURS
Les langages de programmation
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
1 Développement des Applications des Bases de Données Chapitre 6, Sections
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Complément Le diagramme des classes
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
PLD GHome H4214 Piccolo Thomas Gu Lei Deville Romain Huang Yachen
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Programmation concurrente
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Faculté I&C, Claude Petitpierre, André Maurer Le parallélisme Introduction.
Multi-Thread Jian-Yun Nie
Chapitre 3 Syntaxe et sémantique.
The McGraw-Hill Companies, Inc., 1999 INVESTMENTS Fourth Edition Bodie Kane Marcus Irwin/McGraw-Hill 24-1 Evaluation de la Performance Evaluation de la.
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Instructions de contrôle
Le diagramme de séquences
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Stage 2A CS80 pour Origin 1/28. 1) Presentation of the internship 2) The Multi-Oscillator 3) Connection-GUI’s API Conclusion Stage 2A CS80 pour Origin.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Mon émission préférée Lesson Objectives: In this lesson you will learn how to say what time your favourite programme is on, and on which channel.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Méthodes de simulation logicielle pour Esterel Dumitru Potop-Butucaru.
Algorithmique et programmation (1)‏
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Programmation Réactive
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
Les bases de l’algorithmique
Instructions de contrôle
Transcription de la présentation:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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