In un recente articolo CACM [1], gli autori presentano un'implementazione per funzioni organizzate . Usano il termine come se fosse ben noto, e nessuno dei riferimenti sembra un'ovvia introduzione.
Danno una breve spiegazione (l'enfasi sulla mia e il numero di riferimento sono cambiati; è 22 nell'originale)
Nel contesto della generazione di programmi, la programmazione multistadio (MSP, in breve la stadiazione), come stabilito da Taha e Sheard [2], consente ai programmatori di ritardare esplicitamente la valutazione di un'espressione del programma in una fase successiva (quindi, mettere in scena un'espressione). La fase attuale funge effettivamente da generatore di codice che compone (ed eventualmente esegue) il programma della fase successiva.
Tuttavia, Taha e Sheard scrivono (sottolineatura mia):
Un programma in più fasi coinvolge la generazione, la compilazione e l'esecuzione del codice, tutto all'interno dello stesso processo. Le lingue multi-stage esprimono programmi multi-stage. La stadiazione, e di conseguenza la programmazione multi-stadio, rispondono alla necessità di soluzioni per scopi generali che non paghino spese generali interpretative di runtime.
Poi passano a diversi riferimenti a lavori più vecchi che presumibilmente dimostrano che la messa in scena è efficace, il che suggerisce che il concetto sia ancora più vecchio. Non forniscono un riferimento per il termine stesso.
Queste affermazioni sembrano essere ortogonali, se non contraddittorie; forse ciò che scrivono Rompf e Odersky è un'applicazione di ciò che Taha e Sheard propongono, ma forse è un'altra prospettiva sulla stessa cosa. Sembrano concordare sul fatto che un punto importante sia che i programmi (ri) scrivono parti di se stessi in fase di esecuzione, ma non so se sia un'abilità necessaria e / o sufficiente.
Quindi, cosa è la stadiazione rispettivamente sono le interpretazioni della stadiazione in questo contesto? Da dove viene il termine?
- Staging modulare leggero: un approccio pragmatico alla generazione del codice di runtime e DSL compilati di T. Rompf e M. Odersky (2012)
- MetaML e programmazione multi-stage con annotazioni esplicite di W. Taha e T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/…