En un artículo reciente de CACM [1], los autores presentan una implementación para funciones por etapas . Usan el término como si fuera bien conocido, y ninguna de las referencias parece una introducción obvia.
Dan una breve explicación (el énfasis es mío y el número de referencia cambió; es 22 en el original)
En el contexto de la generación de programas, la programación multietapa (MSP, puesta en escena para abreviar) establecida por Taha y Sheard [2] permite a los programadores retrasar explícitamente la evaluación de una expresión de programa a una etapa posterior (por lo tanto, poner en escena una expresión). La etapa actual actúa efectivamente como un generador de código que compone (y posiblemente ejecuta) el programa de la siguiente etapa.
Sin embargo, Taha y Sheard escriben (el énfasis es mío):
Un programa de etapas múltiples es aquel que involucra la generación, compilación y ejecución de código, todo dentro del mismo proceso. Los lenguajes de etapas múltiples expresan programas de etapas múltiples. La puesta en escena y, en consecuencia, la programación en varias etapas, abordan la necesidad de soluciones de uso general que no paguen gastos generales de interpretación en tiempo de ejecución.
Luego van a varias referencias a trabajos más antiguos que supuestamente muestran que la puesta en escena es efectiva, lo que sugiere que el concepto es aún más antiguo. No dan una referencia para el término en sí.
Estas declaraciones parecen ser ortogonales, si no contradictorias; tal vez lo que escriben Rompf y Odersky es una aplicación de lo que proponen Taha y Sheard, pero tal vez sea otra perspectiva sobre lo mismo. Parecen estar de acuerdo en que un punto importante es que los programas (re) escriben partes de sí mismos en tiempo de ejecución, pero no sé si esa es una habilidad necesaria o suficiente.
Entonces, ¿qué es la puesta en escena, respectivamente, son interpretaciones de puesta en escena en este contexto? ¿De dónde viene el término?
- Puesta en escena modular ligera: un enfoque pragmático para la generación de código de tiempo de ejecución y DSL compilados por T. Rompf y M. Odersky (2012)
- MetaML y programación de etapas múltiples con anotaciones explícitas de W. Taha y T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/…