M2 INFORMATIQUE
UE HAI931I - Méta-Programmation et Réflexivité
Christophe Dony
Vue Générale
-
Concepts étudiés : modèles, méta-modèles, réflexivité,
méta-programmation, modèles à l'exécution (models@runtime),
méta-classes, méta-objets, auto-adaptabilité dynamique, construction de systèmes auto-adaptables, construction de
systèmes réflexifs.
- Cours :
- Utilisation de Systèmes Réflexifs : utilisation de méta-objets pour manipuler les classes, les méthodes,
ou la pile d'exécution, ou pour définir un interpréteur
méta-circulaire du langage.
- Construction de systèmes réflexifs
- TPs: Pratique en TP des langages réflexifs les plus élaborés et puissants : Pharo et
CLOS (Common-Lisp Object System), dont dérivent les autres
(JavaScript, Python, Ruby, etc).
- Projet :
Construction de systèmes réflexifs : construction d'un
interpréteur pour un langage intégrant des
méta-classes explicites, avec son bootstrap.
Notes de Cours
Sujets de TDs/TPs
- SEANCES 1 à 9 - Feuille de TD/TP - Utilisation de systèmes
réflexifs :
- Metaprogrammation en
Pharo/Smalltalk (utilisation de méta-objets pour manipuler les classes, les méthodes,
ou la pile d'exécution, utilisation des méta-classes implicites,
- Metaprogrammation en Clos avec les méta-classes explicites,
combinaison et compatibilité de métaclasses (ou d'aspects).
-
SEANCES 9 à 11 : travail sur le projet, voir la section "Projets" ci-dessous.
Corrigés des TDs/TPs
Note : Quand les corrigés sont des codes Pharo, pour les utiliser :
--> solution 1 : ouvrir les fichiers avec votre nagigateur ou avec un éditeur de texte et
faire des copier/coller vers l'éditeur Pharo (le browser);
--> solution 2 : sauvegarder le fichier avec son extension ".st", puis en Pharo, sélectionner le fichier avec l'outil
FileBrowser puis le charger avec FileIn ou Install. Le code
chargé (installé) sera ensuite visible dans le browser.
Projets
-
Description des
étapes 1 et 2 du Projet.
L'étape 1 est individuelle. L'étape 2 peut être
réalisée seul ou à 2. L'étape 2
nécessite pour chaque groupe de choisir un sujet.
- Choix des sujets pour l'étape 2.
- Dafaoui et Daia - article 1
- Balandras et EL-Kaakour - article 2
- Viguier Enzo et Gaido Tristan - article 3
- Laouicé Safa et Zidoune Sara - article 4
- Almallouhi MS et Nguyen Tony - article 5
- Loris Garcia-Pena et Elliot Mazerand - article 7
- Bilem et Dadoua - article 8
- Sar Alexandre - article 9
- Chenini Ayoub et Laguerre Thomas - article 10
- Azouze Ibrahim - article 11
- Bando et Miled - article 12
- Gilles Eric et Navel Morgan - article 13
- Lehamdi - article 14
- El Jaafari Samy - article 17
- Belli - article 18
- Lamine Brahami et Ahmed Belhout - article 19
- Dehimat et Mansouri - article 20
- Mohamed Abdelkader-Kharoubi - article 3
- --------------------
- Azouzout - L2
- Picole-Ollivier et Boussihmed - L4 Php
- Ezzeroug - L5
- Laviron Pablo et Vial Sébastien - Langage new Rust ou Go