Bonjour,
Vous êtes cordialement invités à assister au séminaire qui aura lieu le
mercredi 14 juin à 14 heures en amphi P04 (KB).
-----------------------------------------------------------------------
Le programme :
*OLENA & TRANSFORMERS*
http://www.lrde.epita.fr/cgi-bin/twiki/view/Publications/Seminar-2006-06-14
OLENA
14h00 : Dynamisation de bibliothèques C++ statiques -- Tristan Croiset
14h30 : Conception d'un langage statique, un aperçu de SCOOL -- Q.
Hocquet T. Moulard
TRANSFORMERS
15h45 : Aperçu des Grammaires Attribuées -- Nicolas Pierron
16h15 : eXtended Reactive Modules -- Benoît Sigoure
-----------------------------------------------------------------------
Les Résumés des exposés :
*************************
OLENA
* Dynamisation de bibliothèques C++ statiques -- Tristan Croiset
L'utilisation de bibliothèques statiques en C++ est fréquente notamment
pour proposer des ensembles d'outils de traitements scientifiques. Cette
approche qui permet un développement plus efficace et une importante
généricité, cause plusieurs désavantages à l'utilisation et
particulièrement des temps de compilation rédhibitoires.
Nous avons donc cherché à proposer un pont qui permette de faciliter
l'utilisation de ces bibliothèques dans un contexte purement dynamique.
Plusieurs travaux ont déjà été réalisés au sein du laboratoire et ont
permis d'une part d'en préciser les besoins et d'autre part de démontrer
sa faisabilité. Les solutions retenues conservent l'utilisation du C++
et font appel aux bibliothèques statiques via une compilation « juste à
temps ».
Ce séminaire sera axé sur la proposition d'une solution simple qui doit
allier un fonctionnement parfaitement décrit et délimité avec une
souplesse suffisante. Nous verrons ensuite comment ce socle stable
pourra ensuite servir de base à des extensions d'usage (« sucres ») pour
différents cas d'utilisations.
* Conception d'un langage statique, un aperçu de SCOOL -- Q. Hocquet T.
Moulard
Lors du développement d'Olena, deux bibliothèques ont été créées afin de
contourner les différentes limitations du C++ : Metalic et Static.
Cependant, l'utilisation de ces dernières est loin d'être simple pour un
développeur qui ne connaît pas les mécanismes de fonctionnement interne
de ces outils. L'utilisation abondante de templates et des subtilités
associées à ces derniers rend, de plus, la compréhension de ces
bibliothèques difficile.
Afin de permettre une écriture simple, la création d'un langage
suffisamment expressif pour incorporer dans sa syntaxe les
fonctionnalités de Metalic et Static a été décidé. Ce langage doit
également être très performant afin de satisfaire les contraintes de
rapidité d'exécution liées à Olena. C'est de ce constat qu'est né SCOOL,
un langage statique orienté objet.
SCOOL est un langage transformé vers C++ : le « compilateur » génère des
fichiers C++ qui sont ensuite compilés classiquement. Dans cette
optique, il est possible d'incorporer du code C++ directement dans
SCOOL. Cette transformation n'est malheureusement pas aisée, à cause de
la grande complexité de Metalic, Static ainsi que de la grammaire du C++.
Ce séminaire se déroulera en deux parties. Tout d'abord un aperçu des
fonctionnalités de SCOOP et de sa syntaxe seront expliqués, puis nous
passerons à la façon de transformer cette syntaxe en C++.
TRANSFORMERS
* Aperçu des Grammaires Attribuées -- Nicolas Pierron
La notion de grammaire attribuée fut introduite par Knuth en 1968. Cette
notion permet l'implémentation de certaines passes des compilateurs actuels.
Les attributs sont des symboles attachés aux règles de la grammaire, ils
portent une information telle que le résultat d'une évaluation ou bien
une table de symboles. L'information peut être propagée entre les
attributs en suivant les règles de la grammaire. Plusieurs types de
propagations d'attributs existent, des propagations de haut en bas, de
bas en haut, et de gauche à droite. Ces catégories se répartissent sous
les noms de L-attributs, S-attributs, et LR-attributs.
Les grammaires attribuées permettent de faire de la désambiguïsation, ou
de la vérification de types, ... De même, il existe quelques systèmes
qui gèrent certains types de propagations, en vérifiant les problèmes de
cycles à la compilation de l'évaluateur tel que UU-AG, et le module
sdf-attribute du projet Transformers.
Cet exposé vous donnera un aperçu des grammaires attribuées, ainsi que
des propagations possibles et de la sémantique associée.
* eXtended Reactive Modules -- Benoît Sigoure
Reactive Modules est un formalisme utilisé pour modéliser des systèmes
concurrents. De nombreuses applications de model-checking se basent
dessus, dont PRISM. Ce dernier utilise un langage du même nom basé sur
une version simplifiée de Reactive Modules.
Le langage PRISM a été adopté comme un standard de facto et est utilisé
(entre autres) par APMC. Il a néanmoins plusieurs faiblesses : les seuls
types disponibles sont les entiers et les booléens, il n'existe pas de
structures de contrôle (if, for, etc..).
Ce dernier point est probablement le plus gênant car lorsqu'il s'agit de
décrire des systèmes conséquents, la spécification devient vite pénible.
Certaines personnes mettent au point des solutions « ad hoc » pour
pallier ce problème : l'utilisation de scripts shell, du préprocesseur
du C (cpp) ou du langage M4 sont des exemples courants. C'est pourquoi
eXtended Reactive Modules (XRM) à été créé. Ce package fournis des
outils qui permettent de travailler avec une version étendue du langage
PRISM. Néanmoins, comme il faut rester compatible avec le parseur de
PRISM de base, il faut traduire les systèmes écrits dans la version
étendue du langage vers du code PRISM pur.
Durant la présentation, nous verrons quelles sont les extensions et les
outils proposés par XRM, ainsi que leur fonctionnement, dans le but de
faciliter la description de systèmes en PRISM.
--
Daniela Becker
Responsable administrative du LRDE
--
Daniela Becker
Responsable administrative du LRDE