Dans un récent article du CACM [1], les auteurs présentent une implémentation des fonctions par étapes . Ils utilisent le terme comme s'il était bien connu, et aucune des références ne ressemble à une introduction évidente.
Ils donnent une brève explication (l'accent est mis sur le mien et le numéro de référence a changé; c'est 22 dans l'original)
Dans le contexte de la génération de programmes, la programmation en plusieurs étapes (MSP, staging en abrégé) telle qu'établie par Taha et Sheard [2] permet aux programmeurs de retarder explicitement l'évaluation d'une expression de programme à un stade ultérieur (donc de mettre en scène une expression). La présente étape agit effectivement comme un générateur de code qui compose (et éventuellement exécute) le programme de la prochaine étape.
Cependant, Taha et Sheard écrivent (c'est moi qui souligne):
Un programme en plusieurs étapes est un programme qui implique la génération, la compilation et l'exécution de code, le tout à l'intérieur du même processus. Les langues à plusieurs étapes expriment des programmes à plusieurs étapes. La mise en scène, et par conséquent la programmation en plusieurs étapes, répondent au besoin de solutions à usage général qui ne paient pas de frais d'interprétation d'exécution.
Ils passent ensuite à plusieurs références à des travaux plus anciens qui montreraient que la mise en scène est efficace, ce qui suggère que le concept est encore plus ancien. Ils ne donnent pas de référence pour le terme lui-même.
Ces affirmations semblent orthogonales, sinon contradictoires; peut-être que ce que Rompf et Odersky écrivent est une application de ce que Taha et Sheard proposent, mais c'est peut-être une autre perspective sur la même chose. Ils semblent convenir qu'un point important est que les programmes (ré) écrivent des parties d'eux-mêmes au moment de l'exécution, mais je ne sais pas si c'est une capacité nécessaire et / ou suffisante.
Alors, qu'est-ce que la mise en scène, respectivement, sont des interprétations de la mise en scène dans ce contexte? D'où vient le terme?
- Staging modulaire léger: une approche pragmatique de la génération de code d'exécution et des DSL compilés par T. Rompf et M. Odersky (2012)
- Programmation MetaML et multi-étapes avec annotations explicites par W. Taha et T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/…