“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 47 — #57
i
i
i
i
i
i
i
i
2.3 Le langage noyau déclaratif
47
Les troisième et quatrième cas peuvent être acceptables dans certaines situations.
Dans les deux cas, un programme avec une erreur d’utilisation la signalerait pendant
l’exécution ou pendant la compilation. Dans un système séquentiel c’est acceptable
parce qu’il y a vraiment une erreur. Le troisième cas n’est pas acceptable dans un
système concurrent parce que le résultat devient non-déterministe : selon le hasard de
l’ordonnancement du programme pendant l’exécution, une erreur sera parfois signalée
et parfois pas.
Dans le cinquième cas, le programme attendra que la variable soit liée et continuera
ensuite. Nos modèles de calcul utilisent le cinquième cas. Ce n’est pas acceptable dans
un système séquentiel parce que le programme attendra indéfiniment, au contraire
d’un système concurrent ; dans le déroulement normal du programme il se peut qu’un
autre fil lie la variable. Le cinquième cas introduit une nouvelle forme d’erreur, une
suspension (attente) qui attend pour toujours. Par exemple, si un identificateur est mal
orthographié, alors la variable correspondante ne sera jamais liée. Un bon débuggeur
doit détecter cette situation.
Des variables déclaratives qui font attendre le programme jusqu’à ce qu’elles soient
liées s’appellent des variables dataflow. Le modèle déclaratif utilise les variables
dataflow parce qu’elles sont extrêmement utiles dans la programmation concurrente,
c’est-à-dire pour des programmes avec des activités indépendantes. Si nous faisons
deux opérations concurrentes, par exemple A=23 et B=A+1, avec le cinquième cas
l’exécution sera toujours correcte et donnera toujours la réponse B=24. C’est vrai
indépendamment de l’ordre dans lequel les deux opérations A=23 et B=A+1 sont
exécutées. Dans les autres cas, ce n’est en général pas vrai. Cette propriété d’indépendance de l’ordre rend possible le modèle déclaratif du chapitre 4. Elle est la raison
principale pour utiliser les variables dataflow dans le modèle.
2.3 LE LANGAGE NOYAU DÉCLARATIF
Le modèle déclaratif définit un langage noyau simple. Tous les programmes du modèle
peuvent être exprimés dans ce langage. Nous définissons d’abord la syntaxe et la
sémantique du langage noyau. Ensuite nous expliquons comment bâtir un langage
pratique au-dessus du langage noyau.
2.3.1 La syntaxe
La syntaxe noyau est définie dans les tableaux 2.1 et 2.2. Elle est soigneusement
conçue pour être un sous-ensemble de la syntaxe du langage complet. Toutes les
instructions du langage noyau sont des instructions valables du langage complet.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 62/370

Suivant