© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL

Slides:



Advertisements
Présentations similaires
Approche graphique du nombre dérivé
Advertisements

1 Copyright© 2005 Dominique Blondeau. All rights reserved 3 Modèles moléculaires 3 Modèles moléculaires.
Portée des variables VBA & Excel
Fonctions & procédures
Calculs de complexité d'algorithmes
1 1 Momentum. 2 2 Tout objet en mouvement continuera son mouvement tant que rien nentrave sa progression.
ACTIVITES Le calcul littéral (3).
Les Prepositions.
Construction de Box-Plot ou diagrammes en boîtes ou boîtes à moustaches Construire une boîte à moustaches …
1 Chapitre 1 Lintensité du courant électrique dans les circuits en série.
La tension électrique dans un montage en série
L’intensité du courant électrique dans un circuit en dérivation
Chapitre 2 L’intensité du courant électrique
Intégration réfléchie de la calculatrice Expérimentation
07/23/
Distributivité: Mode demploi Le développement La factorisation Exercices développement Exercices factorisation.
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
18/10/2004 P. Van Roy, InfoT4, S5 1 Informatique T4 Solutions au Test du 18 octobre Peter Van Roy Département dIngénierie Informatique, UCL
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é.
La haute tour sombre 3 Des actions
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
Synchronisation et communication entre processus
La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013.
1.2 COMPOSANTES DES VECTEURS
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Sémantique Formelle Peter Van Roy Département dIngénierie Informatique, UCL
2.1 LONGUEURS ET DISTANCES Cours 4 1.
1.3 COORDONNÉES DES POINTS
Test bilan de calcul mental N°1 :
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 LEtat et lAbstraction de Données Peter Van Roy Département dIngénierie Informatique,
© 2005 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Concurrence et Systèmes Multi-Agents Peter Van Roy Département dIngénierie Informatique,
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
2/11/2004 P. Van Roy, InfoT4, S7 1 Informatique T4 (FSAC1450) Sémantique Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique, UCL
LINF1251: Concurrence et Systèmes Multi-Agents
© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Programmer avec des Types Abstraits Peter Van Roy Département dIngénierie Informatique,
FSAB 1402: Informatique 2 Complexité Calculatoire
FSAB1402: Informatique 2 L’État et l’Abstraction de Données
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Programmer avec lEtat Peter Van Roy Département dIngénierie Informatique, UCL
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
13/10/2005 © 2005 P. Dupont. All rights reserved. 1 FSAB 1402: Informatique 2 Complexité Calculatoire Pierre Dupont Département dIngénierie Informatique,
29/9/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB 1402: Informatique 2 Récursion sur les Entiers Peter Van Roy Département dIngénierie Informatique,
Peter Van Roy Département d’Ingénierie Informatique, UCL
I&G- chapitre 11-La logique Logarithmique -Mme Roulaud
1.1 LES VECTEURS GÉOMÉTRIQUES
3.2 PRODUIT VECTORIEL Cours 7.
Gilbert TOUT NEST QUE CALCUL Vous vous êtes certainement déjà demandé ce que voulait dire « se donner à 100% » ?
Notre calendrier français MARS 2014
C'est pour bientôt.....
Veuillez trouver ci-joint
2.2 PRODUIT SCALAIRE ET CALCUL D’ANGLES
Sommaire Calculs simples Distributivité simple
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
1 Modèle pédagogique d’un système d’apprentissage (SA)
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
chapitre -1- OPERATIONS [B] REGLES DE PRIORITE (f n°103) lundi 15 septembre 2014  rappels de 6°  du nouveau en 5°  applications  exercices  Page.
19/11/2004 P. Van Roy, InfoT4, S9 1 Informatique T4 (FSAC1450) Concurrence et Systèmes Multi-Agents Peter Van Roy Département d’Ingénierie Informatique,
10 paires -. 9 séries de 3 étuis ( n° 1 à 27 ) 9 positions à jouer 5 tables Réalisé par M..Chardon.
CALENDRIER-PLAYBOY 2020.
USAM BRIDGE H O W E L L -CLASSIQUE
9 paires séries de 3 étuis ( n° 1 à 27 )
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
LINF 1251: Introduction à l’Algorithmique et la Programmation II
6/10/2005 © 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Récursion sur les Listes Peter Van Roy Département d’Ingénierie Informatique,
Transcription de la présentation:

© 2007 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 La Concurrence Déclarative Peter Van Roy Département dIngénierie Informatique, UCL

© 2007 P. Van Roy. All rights reserved.2 Ce quon va voir aujourdhui La concurrence déclarative On peut prendre un programme déclaratif et le rendre concurrent simplement en ajoutant des fils, sans changer autre chose La programmation multi-agent Quelques regards sur le cours Réflections sur les paradigmes de programmation Un exercice de sémantique La complexité Des consignes et des conseils pour lexamen

© 2007 P. Van Roy. All rights reserved.3 Suggestions de lecture pour ce cours Chapitre 4 (section 4.2) Programmer avec les fils Chapitre 4 (section 4.3) Agents, flots, pipelines Chapitre 2 (section 2.6) Du langage noyau au langage pratique

© 2007 P. Van Roy. All rights reserved. 4 La concurrence déclarative

© 2007 P. Van Roy. All rights reserved.5 La concurrence déclarative Les programmes multi-agents que nous avons vus hier sont déterministes Avec les mêmes entrées, ils donnent les mêmes résultats Lagent Trans, avec lentrée 1|2|3|_, donne toujours la sortie 1|4|9|_ Dans ces programmes, la concurrence ne change pas la valeur du résultat, mais uniquement lordre du calcul (quand le résultat est calculé) Cette propriété facilite de beaucoup la programmation On peut ajouter des fils à un programme existant sans que le résultat change (la transparence de la concurrence) Cette propriété est vraie uniquement pour la programmation déclarative Elle nest pas vraie pour la programmation avec état

© 2007 P. Van Roy. All rights reserved.6 La concurrence déclarative est transparente (1) fun {Map Xs F} case Xs of nil then nil [] X|Xr then {F X} | {Map Xr F} end

© 2007 P. Van Roy. All rights reserved.7 La concurrence déclarative est transparente (2) fun {CMap Xs F} case Xs of nil then nil [] X|Xr then thread {F X} end | {CMap Xr F} end

© 2007 P. Van Roy. All rights reserved.8 La concurrence déclarative est transparente (3) fun {CMap Xs F} case Xs of nil then nil [] X|Xr then thread {F X} end | {CMap Xr F} end thread … end peut être utilisé comme expression

© 2007 P. Van Roy. All rights reserved.9 La concurrence déclarative est transparente (4) fun {CMap Xs F} case Xs of nil then nil [] X|Xr then thread {F X} end | {CMap Xr F} end Quest-ce qui se passe si on fait: declare F {Browse {CMap [ ] F}}

© 2007 P. Van Roy. All rights reserved.10 La concurrence déclarative est transparente (5) fun {CMap Xs F} case Xs of nil then nil [] X|Xr then thread {F X} end | {CMap Xr F} end Le browser montre [ _ _ _ _ ] CMap calcule le squelette de la liste Les nouveaux fils attendent que F soit lié

© 2007 P. Van Roy. All rights reserved.11 La concurrence déclarative est transparente (6) fun {CMap Xs F} case Xs of nil then nil [] X|Xr then thread {F X} end | {CMap Xr F} end Quest-ce qui se passe si on ajoute: F = fun {$ X} X+1 end

© 2007 P. Van Roy. All rights reserved.12 La concurrence déclarative est transparente (7) fun {CMap Xs F} case Xs of nil then nil [] X|Xr then thread {F X} end | {CMap Xr F} end Le browser montre [ ]

© 2007 P. Van Roy. All rights reserved.13 La concurrence pour les nuls (1) On peut ajouter des fils à un programme déclaratif existant sans que le résultat change Par conséquence, il est très facile de prendre un programme déclaratif et de le rendre concurrent Il suffit dinsérer linstruction thread … end là où on a besoin de la concurrence Attention: la concurrence pour les nuls ne marche quavec un programme déclaratif (sans cellules)! Cela ne marchera pas pour Java, par exemple

© 2007 P. Van Roy. All rights reserved.14 La concurrence pour les nuls (2) fun {Fib X} if X==0 then 0 elseif X==1 then 1 else thread {Fib X-1} end + {Fib X-2} end end

© 2007 P. Van Roy. All rights reserved.15 Pourquoi cela marche? fun {Fib X} if X==0 then 0 elseif X==1 then 1 else F1 F2 in F1 = thread {Fib X-1} end F2 = {Fib X-2} F1 + F2 end end Dépendance dataflow Pour comprendre pourquoi cela marche, voici le programme en partie en langage noyau

© 2007 P. Van Roy. All rights reserved.16 Exécution de {Fib 6} F6 F5 F4F2 F3 F2 F1 F2 F3 F2 F1 F4 F1 F3 F2 Créer un thread Synchroniser avec le résultat Thread actif

© 2007 P. Van Roy. All rights reserved.17 Observer lexécution de Fib

© 2007 P. Van Roy. All rights reserved. 18 La programmation multi-agent

© 2007 P. Van Roy. All rights reserved.19 Encore des agents! Hier nous avons vu quelques exemples simples de programmes multi-agents Producteur-consommateur Producteur-transformateur-consommateur (pipeline) Regardons maintenant un exemple plus sophistiqué

© 2007 P. Van Roy. All rights reserved.20 Le crible dEratosthènes Le crible dEratosthènes est un algorithme pour faire la séquence des nombres premiers On commence avec une séquence dentiers, on la passe par un pipeline dagents dont chaque agent enlève les multiples du premier élément -2k-3k-5k 2|3|4|5|6|7|8|… 3|5|7|9|11|13|15|…5|7|11|13|17|19|… 7|11|13|17|19|… …

© 2007 P. Van Roy. All rights reserved.21 Un agent pour enlever des multiples Voici un programme qui enlève les multiples de k: fun {Filtre Xs K} case Xs of X|Xr then if X mod K \= 0 then X|{Filtre Xr K} else {Filtre Xr K} end else nil end end Pour en faire un agent, il faut le mettre dans un fil: thread Ys={Filtre Xs K} end

© 2007 P. Van Roy. All rights reserved.22 Le programme principal Voici le programme principal: fun {Crible Xs} case Xs of nil then nil [] X|Xr then X|{Crible thread {Filtre Xr X} end} end end declare Xs Ys in thread Xs={Prod 2} end thread Ys={Crible Xs} end {Browse Ys}

© 2007 P. Van Roy. All rights reserved.23 Une optimisation Sinon on crée beaucoup trop dagents! fun {Crible2 Xs M} case Xs of nil then nil [] X|Xr then if X=<M then X|{Crible2 thread {Filtre Xr X} end M} else Xs end end end On appelle alors {Crible2 Xs 316} pour une liste avec des nombres premiers jusquau (pourquoi?)

© 2007 P. Van Roy. All rights reserved. 24 Réflections sur les paradigmes de programmation

© 2007 P. Van Roy. All rights reserved.25 Les paradigmes de FSAB1402 Dans ce cours nous avons vu quelques uns des concepts les plus importants de la programmation Nous avons aussi vu quelques paradigmes de programmation Programmation déclarative (programmation fonctionnelle) Programmation avec état Programmation orientée objet Programmation concurrente avec dataflow Programmation multi-agent Il y a beaucoup dautres paradigmes intéressants! Programmation concurrente par envoi de messages Programmation concurrente par état partagé Programmation par composants logiciels Programmation logique Programmation par contraintes …

© 2007 P. Van Roy. All rights reserved.26 Les trois mondes du cours Dans ce cours, nous avons vu trois mondes très différents, chacun avec sa manière de penser Pour voir comment lorienté objet et le multi-agent peuvent être combiné, il faut suivre le cours INGI1131! Programmation déclarative Fonctions et récursion Programmation orientée objet Abstraction (objets et types abstraits) Polymorphisme Héritage Programmation multi-agent Concurrence et dataflow Flots et agents Messages asynchrones + état (cellules)+ concurrence (fils)

© 2007 P. Van Roy. All rights reserved.27 Le langage noyau du modèle déclaratif ::= skip | 1 2 | local in end | 1 = 2 | = | if then 1 else 2 end | { 1 … n } | case of then 1 else 2 end ::= | | ::= | ::= proc {$ 1 … n } end, ::= ( 1 : 1 … n : n )

© 2007 P. Van Roy. All rights reserved.28 Le langage noyau du modèle orienté objet ::= skip | 1 2 | local in end | 1 = 2 | = | if then 1 else 2 end | { 1 … n } | case of then 1 else 2 end | {NewCell } | := | | try 1 catch then 2 end | raise end ::= | | ::= | ::= proc {$ 1 … n } end, ::= ( 1 : 1 … n : n ) Modèle déclaratif Extension avec létat et les exceptions

© 2007 P. Van Roy. All rights reserved.29 Le langage noyau du modèle multi-agent ::= skip | 1 2 | local in end | 1 = 2 | = | if then 1 else 2 end | { 1 … n } | case of then 1 else 2 end | thread end ::= | | ::= | ::= proc {$ 1 … n } end, ::= ( 1 : 1 … n : n ) Modèle déclaratif Extension avec les fils

© 2007 P. Van Roy. All rights reserved.30 Dautres extensions? On peut ajouter tout: létat, les exceptions et les fils Cela donne le modèle concurrent par état partagé Cest assez compliqué à programmer Une autre possibilité est dajouter des canaux de communication à la place de létat Cela donne le modèle concurrent par envoi de messages Cest un très bon modèle! Il y a encore dautres possibilités Etendre le modèle déclaratif avec le calcul paresseux Voir le cours INGI1131!

© 2007 P. Van Roy. All rights reserved.31 Paradigmes de programmation Programmation déclarative Programmation fonctionnelle stricte, Scheme, ML Programmation logique déterministe + concurrence + synchronisation selon besoin Concurrence dataflow (déclarative) Prog. fonctionnelle paresseuse, Haskell + choix nondéterministe Programmation logique concurrente + traitement dexceptions + état explicite Programmation orientée objet (OO), Java, C++, Smalltalk + recherche Prog. logique classique, Prolog Programmation OO concurrente (envoi de messages, Erlang, E) (état partagé, Java) + espaces de calcul Programmation par contraintes Ce schéma donne un résumé des différents paradigmes avec les relations entre eux Chaque paradigme a ses avantages et désavantages et un domaine où il est le meilleur

© 2007 P. Van Roy. All rights reserved.32 La coexistence des paradigmes Chaque paradigme a sa place Avec plus de concepts on peut exprimer plus, mais le raisonnement devient plus compliqué Avec moins de concepts on peut satisfaire des conditions dutilisation plus stricte Les différents paradigmes ne sont pas meilleurs ou pires, mais simplement différents Dans vos programmes, je vous conseille de bien réfléchir et de choisir le paradigme approprié Maintenant, je vous conseille de relire le début du premier cours! Pourquoi le cours est organisé autour des concepts

© 2007 P. Van Roy. All rights reserved. 33 Un exercice de sémantique

© 2007 P. Van Roy. All rights reserved.34 Facilité avec la sémantique La sémantique est une partie importante de ce cours Il ne sagit pas seulement de savoir programmer avec les concepts Il sagit de les comprendre, et donc de connaître leur sémantique Jattends que vous puissiez faire des calculs rapides avec la sémantique des programmes Il faut faire des exercices (écrire les pas à la main) pour gagner cette facilité

© 2007 P. Van Roy. All rights reserved.35 Lénoncé Quel est létat à la fin de lexécution de: local MakeBumper B Y in fun {MakeBumper} C={NewCell 0} in fun end end B={MakeBumper} Y={B} end Montrez quelques pas dexécution représentatifs

© 2007 P. Van Roy. All rights reserved.36 Vers le langage noyau… local MakeBumper B Y in proc {MakeBumper R} C={NewCell 0} in R=proc {$ K} end end {MakeBumper B} {B Y} end s1s1 s2s2 Solution au tableau

© 2007 P. Van Roy. All rights reserved.37 Létat final ( [], {m=p 1, b=p 2, y=1, c=, i=0, c:y} ) avec: p 1 =(proc {$ R} local C={NewCell 0} in … end end, {}) p 2 =(proc {$ K} local X Y in Y=X+1 C:=Y end end, {C c}) Une cellule

© 2007 P. Van Roy. All rights reserved. 38 La complexité

© 2007 P. Van Roy. All rights reserved.39 Conseils Ne pas utiliser des équations de récurrence Nous navons pas fait des exercices pour cela Utiliser un raisonnement sur le nombre dappels et la taille des structures de données Attention: il y a trois concepts orthogonaux (voir transparent suivant)

© 2007 P. Van Roy. All rights reserved.40 Les trois axes Le temps ou lespace Complexité temporelle (temps utilisé) Complexité spatiale (taille mémoire utilisée) Les bornes: Supérieure (notation O) Inférieure (notation ) Supérieure et inférieure (notation ) La distribution des entrées (toujours en fonction de la taille n!) Pire cas: ces entrées qui donnent la pire borne Meilleur cas: idem mais la meilleure borne Moyenne cas: cas typique des entrées Question: Pour une fonction de liste, pourquoi prendre le cas dune liste vide est faux pour avoir une complexité en meilleur cas?

© 2007 P. Van Roy. All rights reserved. 41 Consignes et conseils pour lexamen

© 2007 P. Van Roy. All rights reserved.42 Lexamen Lexamen sera de 3h, à livre fermé Il y aura une division égale entre théorie et pratique Attention à la précision pour la théorie (voir le livre pour les définitions!) Attention à la syntaxe pour la pratique! Il y aura certainement une question sur la sémantique Un exercice où vous devez faire lexécution dun programme Attention à ne pas sombrer dans les détails! Sur le site Web il y a une ancienne question dexamen avec solution (faite par Damien Saucez et Anh Tuan Tang Mac) La matière: les séances magistrales et les séances pratiques Tout le contenu du livre (les parties non-vues dans les séances seront considérées comme des bonus) Des définitions précises et des exemples supplémentaires se trouvent dans le livre Les notes ne seront pas sur une courbe Jespère pouvoir vous donner tous de bonnes notes

© 2007 P. Van Roy. All rights reserved.43 La sémantique Le langage noyau L environnement contextuel La définition et lappel des procédures Attention à lenvironnement pendant lexécution de la procédure: ce nest pas le même que lenvironnement à lappel! La définition et lexécution des cellules Une cellule est une paire, qui vit dans la mémoire à affectation multiple Exécuter des petits programmes avec la sémantique Pas montrer tous les détails, mais montrer les choses importantes

© 2007 P. Van Roy. All rights reserved.44 Le formulaire pour la syntaxe Vous pouvez venir à lexamen avec un formulaire pour la syntaxe Le but est que vous ne faites pas derreurs de syntaxe dans vos réponses aux questions Le formulaire doit être écrit à la main et rendu avec lexamen, mais il ne sera pas coté Une page, contenant uniquement des fragments de programme et des règles de grammaire Fragments en Oz et en Java Aucun mot écrit en langue naturelle Aucune équation mathématique

© 2007 P. Van Roy. All rights reserved. 45 Résumé

© 2007 P. Van Roy. All rights reserved.46 Résumé La concurrence déclarative On peut prendre nimporte quel programme déclaratif et le rendre concurrent (concurrence pour les nuls) Attention: ceci ne marche pas pour les programmes avec des cellules (létat)! La programmation multi-agent Un exemple plus compliqué: le crible dEratosthènes Un exercice de sémantique Les paradigmes de programmation Une réflection sur le contenu du cours Des consignes et des conseils pour lexamen Attention aux définitions précises! Il y aura certainement un exercice sur la sémantique