In einem kürzlich erschienenen CACM-Artikel [1] präsentieren die Autoren eine Implementierung für inszenierte Funktionen . Sie verwenden den Begriff so, als ob er bekannt wäre, und keine der Referenzen scheint eine offensichtliche Einführung zu sein.
Sie geben eine kurze Erklärung (Betonung meiner und Referenznummer geändert; es ist 22 im Original)
Im Rahmen der Programmerstellung können Programmierer durch mehrstufige Programmierung (MSP, Staging for Short) nach Taha und Sheard [2] die Auswertung eines Programmausdrucks explizit auf eine spätere Stufe verschieben (also einen Ausdruck inszenieren). Die vorliegende Stufe fungiert effektiv als Codegenerator, der das Programm der nächsten Stufe zusammenstellt (und möglicherweise ausführt).
Taha und Sheard schreiben jedoch (Hervorhebung meiner):
Ein mehrstufiges Programm umfasst das Generieren, Kompilieren und Ausführen von Code innerhalb desselben Prozesses. Mehrstufige Sprachen drücken mehrstufige Programme aus. Die Bereitstellung und folglich die mehrstufige Programmierung sprechen die Notwendigkeit von Allzwecklösungen an, bei denen sich der Aufwand für die Laufzeitinterpretation nicht lohnt.
Sie führen dann mehrere Verweise auf ältere Arbeiten an, die angeblich zeigen, dass die Inszenierung effektiv ist, was darauf hindeutet, dass das Konzept noch älter ist. Sie geben keine Referenz für den Begriff an sich.
Diese Aussagen scheinen orthogonal zu sein, wenn nicht sogar widersprüchlich. Vielleicht ist das, was Rompf und Odersky schreiben, eine Anwendung dessen, was Taha und Sheard vorschlagen, aber vielleicht ist es eine andere Perspektive auf dasselbe. Sie scheinen sich darin einig zu sein, dass ein wichtiger Punkt darin besteht, dass Programme Teile von sich zur Laufzeit (neu) schreiben, aber ich weiß nicht, ob dies eine notwendige und / oder ausreichende Fähigkeit ist.
Was ist Inszenierung bzw. Interpretation von Inszenierung in diesem Kontext? Woher kommt der Begriff?
- Lightweight Modular Staging: Ein pragmatischer Ansatz zur Generierung von Laufzeitcode und kompilierten DSLs von T. Rompf und M. Odersky (2012)
- MetaML und mehrstufige Programmierung mit expliziten Anmerkungen von W. Taha und T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/…