Em um artigo recente do CACM [1], os autores apresentam uma implementação para funções em etapas . Eles usam o termo como se fosse bem conhecido, e nenhuma das referências parece uma introdução óbvia.
Eles dão uma breve explicação (os meus enfatizam e o número de referência mudou; são 22 no original)
No contexto da geração de programas, a programação em vários estágios (MSP, estadiamento, abreviado), conforme estabelecido por Taha e Sheard [2], permite que os programadores adiem explicitamente a avaliação de uma expressão de programa para um estágio posterior (portanto, preparem uma expressão). O estágio atual atua efetivamente como um gerador de código que compõe (e possivelmente executa) o programa do próximo estágio.
No entanto, Taha e Sheard escrevem (ênfase minha):
Um programa de vários estágios envolve a geração, compilação e execução de código, tudo dentro do mesmo processo. Linguagens de vários estágios expressam programas de vários estágios. A preparação e, consequentemente, a programação em vários estágios, atendem à necessidade de soluções de uso geral que não pagam custos indiretos interpretativos em tempo de execução.
Eles então fazem várias referências a trabalhos mais antigos, alegadamente mostrando que a preparação é eficaz, o que sugere que o conceito é ainda mais antigo. Eles não dão uma referência para o próprio termo.
Essas afirmações parecem ortogonais, se não contraditórias; talvez o que Rompf e Odersky escrevam seja uma aplicação do que Taha e Sheard propõem, mas talvez seja outra perspectiva sobre a mesma coisa. Eles parecem concordar que um ponto importante é que os programas (re) escrevem partes de si mesmos em tempo de execução, mas não sei se essa é uma capacidade necessária e / ou suficiente.
Então, o que é encenação, respectivamente, são interpretações de encenação neste contexto? De onde vem o termo?
- Estadiamento Modular Leve: Uma Abordagem Pragmática à Geração de Código em Tempo de Execução e DSLs Compiladas por T. Rompf e M. Odersky (2012)
- Programação MetaML e multiestágio com anotações explícitas de W. Taha e T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/...