Corrigé
1)
Il existe des langages de programmation
sans variables.
1.1) citez-en un (ou le nom d'un type
de langage entrant dans cette
catégorie)
Langages fonctionnels, exemple : Caml
1.2) quels en sont les concepts essentiels ?
fonctions, composition de fonctions,
application de fonctions
2)
Il existe des langages de spécification
sans variables.
21) B est-il sans variables ?
non.
Il existe des langages de spécification
qui sont fondamentalement sans
variables, même s'ils sont parfois mixtes
(i.e. utilisent des
variables).
2.2) Citez celui que vous avez utilisé à
l'IUT
FSP avec l'atelier LTSA
2.3) Qu'est-ce qu'un état défini en termes
des concepts de ce langage.
Donnez un exemple illustratif.
Un état est un comportement possible.
Exemple de la lampe :
ETEINTE = (tirage -> ALLUMEE),
ALLUMEE = (tirage --> ETEINTE).
Les états sont ETEINTE et ALLUMEE.
3) Prenez l'exemple de la lampe que
l'on allume en tirant une ficelle et
que l'on éteint en retirant la ficelle
pour illustrer les concepts :
3.1) d'événement
ce qui entraîne un changement d'état.
tirage de la ficelle
3.2) d'état
un comportement possible. Ici dans
l'état ETEINTE, on ne peut que tirer
sur la ficelle. Idem d'ailleurs pour
l'état ALLUMEE.
3.3) utilisez cet exemple que vous
spécifierez en B classique et en B
événementiel (Invariant et les
opérations allumer et éteindre) et en FSP
pour illustrer vos réponses à la question 2.
MACHINE
lampeClassique
SETS
ETAT = {allumee, eteinte}
VARIABLES
etatLampe
INVARIANT
etatLampe : ETAT
INITIALISATION
etatLampe := eteinte
OPERATIONS
allumer =
etatLampe := allumee;
eteindre =
etatLampe := eteinte
END
MACHINE
lampeEvénementiel
SETS
ETAT = {allumee, eteinte}
VARIABLES
etatLampe
INVARIANT
etatLampe : ETAT
INITIALISATION
etatLampe := eteinte
OPERATIONS
allumer =
SELECT etatLampe = eteinte THEN
etatLampe := allumee
END;
eteindre =
SELECT etatLampe = allumee THEN
etatLampe := eteinte
END
END
FSP
ETEINTE = (tirage -> ALLUMEE),
ALLUMEE = (tirage --> ETEINTE).
ou sans expliciter les états :
LAMPE = (tirage -> LAMPE).
3.4) Fournir le diagramme de transition
d'état étiqueté du comportement
de la lampe.
Deux ronds étiquetés l'un par allumée
et l'autre par éteinte.
Des flèches entre les ronds :
- une de éteinte vers allumée
- une de allumée vers éteinte
-selon l'état initial choisi,
une flèche pointant sur un des
ronds et n'ayant pas
de rond au départ de la flèche.
Flèche étiquetées chacune par tirer
4) Soit le texte suivant :
(Il s'agit du percement du tunnel
sous le Mont-Blanc) " [...] C'est
pourquoi, à cette époque, on avait
envisagé que sur les 12 600 mètres de
longueur totale du tunnel, les Italiens
perceraient 6 750 mètres de
galerie et les Français 5 850 mètres,
afin que la rencontre s'effectue
au
même moment." (Article paru dans
L'Economie, n° 826, 14 juin 1962).
4.1) Vos remarques pertinentes
Se rencontrer en même temps est un pléonasme !
Tant que l'autre n'est
pas au rendez-vous, la rencontre n'a pas
lieu (la communication) !
4.2) Utilisez-le pour illustrer le type
de communication qui est utilisé
en FSP (LTSA) et en CCS
C'est le rendez-vous qui est utilisé en FSP.
La communication s'y fait
lorsqu'on trouve le même nom d'événement
dans la spécification de deux
processus.
4.3) Quel est le nom donné à ce type
de communication ?
communication par rendez-vous (synchronisme)
4.4) Donnez un exemple d'un système
ayant un verrou fatal (spécifiez en
FSP)
Exemple de système avec verrou fatal :
P1 = (a -> b -> P1).
P2 = (b -> a -> P2).
||SYS = (P1 || P2).
Commentaires en vrac :
Mes questions portaient sur des choses élémentaires :
- grands types de langages de programmation (y voir un peu clair en find de 1ere année)
- mathématiques (composition de fonctions, application de fonctions)
- état, événement
- communication par rendez-vous
- verrou fatal
Il s'agissait d'illustrer en partant d'un exemple fourni.
Le corrigé vous est fourni.
==========================================
J'ai lu des phrases recopiées (j'espère qu'elles ont été mal recopiées) je ne sais où et particulièrement fumeuses.
Vous disposiez des polycopiés et sinon des cours rédigés par des enseignants compétents. Alors n'allez pas chercher ce qui est très mauvais !
Voici des textes (je n'ai pas corrigé l'orthographe) peu utiles car trop fumeux :
"le type de programmation fonctionnelle consiste en une suite de fonction"
"les états sont tous les états ..."
Il semble que beaucoup ont des difficultés de lecture du français.
A la question "qu'est ce qu'un état défini en termes des concepts de ce langage ? " (le langage est celui que l'étudiant a énoncé comme réponse à la question précédente)
j'ai lu plusieurs fois :
"un état défini est un état ...."
et bien rarement une définition exprimée avec les concepts de ce langage.
Si on a choisi FSP ou CCS, un état est défini en termes des conceps de FSP (à savoir "actions" ou "événements") comme étant la suite d'actions possible quand on est dans cet état.
Cela a été répété et illustré maintes fois, en particulier quand j'ai fait le graphe de transition d'états où je décrivais justement chaque état par une "expression d'agents" (une suite d'actions).
J'ai la preuve ! voir le présent blog spec2 !
J'ai trouvé aussi pas mal de contradictions :
"B est un langage de spécification avec variables.
Un exemple de langage de spécification sans variables est B"
L'orthographe est trop souvent du n'importe quoi. Svp apprenez le minimum d'orthographe française. C'est utile pour pouvoir spécifier en français.
J'ai eu des remarques étonnantes en termes économiques en ce qui concerne le tunnel sous le Mont-Blanc. On m'a parlé de vitesse, de rentabilité, d'efficacité. Il serait bon d'étudier les concepts élémentaires d'économie.
Je rappelle que je demandais d'utiliser le texte pour illustrer un type de communication (et je précisais même "qui est utilisé en FSP et en CCS". Ce faisant je donnais une réponse à une précédente question. Un effet de bord !)
Etonnant : les événements "tirer la ficelle" et "retirer la ficelle" et pourquoi pas "retirer retirer retirer" ?
l'événement en FSP ne se définit pas en termes d'autres événements. L'ensemble des événements est un ensemble d'éléments atomiques.
LAMPE = (tirer -> LAMPE).
ou si on veut nommer les états
ETEINTE = (tirer -> ALLUMEE),
ALLUMEE = (tirer -> ETEINTE).
si on considère deux autres événements : { allumer, éteindre}
ETEINTE = (tirer -> allumer -> ALLUMEE),
ALLUMEE = (tirer -> eteindre -> ETEINTE).
Sans référence à une théorie, il est difficile d'écrire des choses cohérentes. Merci R. Milner, T. Hoare !