M2 INFORMATIQUE
UE HAI931I - Méta-Programmation et Réflexivité
Christophe Dony
Introduction
-
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).
- à suivre ...
Corrigés des Exercices
Quand les corrigés sont des codes Pharo, pour les utiliser :
--> solution 1 : ouvrir les fichiers avec un éditeur de texte et
faire des copier/coller vers l'éditeur Pharo (dans le browser);
--> solution 2 : sauvegarder le fichier avec son extension ".st", puis en Pharo, ouvrir le fichier avec l'outil
FileBrowser puis le charger avec FileIn ou Install. Le code
chargé (installé) sera ensuite visible dans le browser.
Projet
-
Description du Projet et des articles proposés.
- Choix des sujets pour l'étape 2.
- Simula/Prud'homme-Gateau : L JavaEtendu (+Javassist+...)
- Nizard/Grimaud : L Python
- Ramdane : article 1
- Said/Cossu : article 2
- Henry/Gueye - article 3
- Reyne/Sandratra : article 4
- Moulahcene/Ainas - article 5
- Taguelmimt : article 7
- Mekhnache - article 8
- Bourret/Crista : article 10
- Rouquairol/Bengoufa : article 13
- Bentolila : article 14
- Puccio/sapin : article 15
- Gomes : article 16
- ----
- Urena-Lhuillier : article 11
- Zourane-Ongaro : article 12
- Eftimov-Hakenholz : article 17