La Concurrence D - PowerPoint PPT Presentation

About This Presentation
Title:

La Concurrence D

Description:

On peut prendre un programme d claratif et le rendre concurrent ... Thread actif. P. Van Roy, LINF1251. 16. Observer l'ex cution de Fib. P. Van Roy, LINF1251. 17 ... – PowerPoint PPT presentation

Number of Views:31
Avg rating:3.0/5.0
Slides: 38
Provided by: seifha
Category:

less

Transcript and Presenter's Notes

Title: La Concurrence D


1
La Concurrence Déclarativeet Quelques
Réflectionssur la Programmation
  • Peter Van Roy
  • Département dIngénierie Informatique, UCL
  • pvr_at_info.ucl.ac.be

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
    threads, sans changer autre chose
  • La programmation multi-agent
  • Un exercice de sémantique
  • Quelques réflections sur les paradigmes de
    programmation
  • Des consignes et des conseils pour lexamen

3
La concurrencedéclarative
4
La concurrence déclarative
  • Les programmes multi-agents quon a vu la semaine
    dernière sont déterministes
  • Avec les mêmes entrées, ils donnent les mêmes
    résultats
  • Lagent Trans, avec lentrée 123_, donne
    toujours la sortie 149_
  • 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
  • Par exemple, on peut ajouter des threads à 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
  • Regardons la propriété de plus près

5
La concurrence déclarativeest transparente (1)
  • fun Map Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • F X Map Xr F
  • end
  • end

6
La concurrence déclarativeest transparente (2)
  • fun CMap Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • thread F X end CMap Xr F
  • end
  • end

7
La concurrence déclarativeest transparente (3)
thread end peut être utilisé comme expression
  • fun CMap Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • thread F X end CMap Xr F
  • end
  • end

8
La concurrence déclarativeest transparente (4)
  • fun CMap Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • thread F X end CMap Xr F
  • end
  • end
  • Quest-ce qui se passe si on fait
  • declare F
  • Browse CMap 1 2 3 4 F

9
La concurrence déclarativeest transparente (5)
  • fun CMap Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • thread F X end CMap Xr F
  • end
  • end
  • Le browser montre _ _ _ _
  • CMap calcule le squelette de la liste
  • Les nouveaux threads attendent que F soit lié

10
La concurrence déclarativeest transparente (6)
  • fun CMap Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • thread F X end CMap Xr F
  • end
  • end
  • Quest-ce qui se passe si on fait
  • F fun X X1 end

11
La concurrence déclarativeest transparente (7)
  • fun CMap Xs F
  • case Xs
  • of nil then nil
  • XXr then
  • thread F X end CMap Xr F
  • end
  • end
  • Le browser montre 2 3 4 5

12
La concurrencepour les nuls (1)
  • On peut ajouter des threads à un programme
    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

13
La concurrencepour les nuls (2)
  • fun Fib X
  • if X0 then 0 elseif X1 then 1 else
  • thread Fib X-1 end Fib X-2 end
  • end

14
Pourquoi cela marche?
  • fun Fib X
  • if X0 then 0 elseif X1 then 1
  • else F1 F2 in
  • F1 thread Fib X-1 end F2
    Fib X-2
  • F1 F2end
  • end

Dépendance dataflow
15
Exécution de Fib 6
F2
Créer un thread
F1
F3
F2
F4
Synchroniser avec le résultat
F2
F5
F1
F3
F2
F1
F3
Thread actif
F6
F4
F2
16
Observer lexécution de Fib
17
La programmationmulti-agent
18
Encore des agents!
  • La semaine dernière on a vu quelques exemples
    simples de programmes multi-agents
  • Producteur-consommateur
  • Producteur-transformateur-consommateur (pipeline)
  • Regardons maintenant un exemple plus sophistiqué

19
Le crible dEratosthènes
-2k
-3k
-5k

2345678
711131719
3579111315
5711131719
  • 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

20
Un agent pour enleverdes multiples
  • Voici un programme qui enlève les multiples de
    kfun Filtre Xs K case Xs of XXr then if
    X mod K \ 0 then XFiltre Xr K else Filtre
    Xr K end else nil endend
  • Pour en faire un agent, il faut le mettre dans un
    threadthread YsFiltre Xs K end

21
Le programme principal
  • Voici le programme principalfun Crible
    Xs case Xs of nil then nil XXr then
    XCrible thread Filtre Xr X end
    endenddeclare Xs Ys inthread XsProd 2
    endthread YsCrible Xs endBrowse Ys

22
Une optimisation
  • Sinon on crée beaucoup trop dagents!fun
    Crible2 Xs M case Xs of nil then nil XXr
    then if XltM then XCrible2 thread
    Filtre Xr X end M else Xs end endend
  • On appelle alors Crible2 Xs 316 pour une liste
    avec des nombres premiers jusquau 100000
    (pourquoi?)

23
Un exercice de sémantique
24
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 pour gagner cette
    facilité

25
Lénoncé
  • Quel est létat à la fin de lexécution
    delocal MakeBumper B Y in fun MakeBumper
    CNewCell 0 in fun C_at_C1 _at_C
    end end BMakeBumper YBend
  • Montrez quelques pas dexécution représentatifs

26
Traduction partielleen langage noyau
  • local MakeBumper B Y in proc MakeBumper R
    CNewCell 0 in Rproc K C_at_C1
    K_at_C end end MakeBumper B B Yend

s1
s2
Solution au tableau
27
Létat final
Une cellule
  • ( , mp1, bp2, y1, cx, i0, cy )
  • avec
  • p1(proc R CNewCell 0 in end, )
  • p2(proc K C_at_C1 K_at_C end, C c)

28
Les paradigmes de programmation
29
Les paradigmes de LINF1251
  • Dans ce cours nous avons vu quelques des concepts
    les plus importants dans 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

30
Les trois mondes du cours
Programmation déclarative
état (cellules)
concurrence (threads)
Programmation orientée objet Abstraction Polymorph
isme Héritage
Programmation multi-agent Concurrence et
dataflow Flots et agents Messages asynchrones
  • Dans ce cours, nous avons vu trois mondes très
    différents, chacun avec sa manière de penser
  • Pour voir comment la programmation orientée objet
    et multi-agent se retrouvent, il faut suivre le
    cours INGI2131!

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


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 on a organisé le cours autour des
    concepts

33
Des consignes et des conseils pour lexamen
34
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!)
  • Attention à la syntaxe pour la pratique!
  • Il y aura certainement un exercice sur la
    sémantique
  • Où vous devez faire lexécution dun programme
    sans sombrer dans les détails
  • La matière est tout ce qui a été vu dans les
    cours magistraux et les séances pratiques
  • Une définition précise des concepts se trouve
    dans le livre du cours
  • Les notes ne seront pas sur une courbe
  • Jespère vous pouvoir donner tous de bonnes notes

35
Résumé
36
Résumé
  • La concurrence déclarative
  • On peut prendre nimporte quel programme
    déclaratif et le rendre concurrent
  • Attention ceci ne marche pas pour les programmes
    avec é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

37
  • Fin du cours
  • Jespère que ce survol
  • de la programmation vous a plu
  • Bonne chance pour lexamen!
Write a Comment
User Comments (0)
About PowerShow.com