В недавней статье CACM [1] авторы представляют реализацию поэтапных функций . Они используют этот термин, как если бы он был хорошо известен, и ни одна из ссылок не выглядит как очевидное введение.
Они дают краткое объяснение (выделено мое и номер ссылки изменен; в оригинале 22)
В контексте генерации программ, многоступенчатое программирование (MSP, сокращенное использование), как установлено Taha и Sheard [2], позволяет программистам явно откладывать оценку выражения программы на более позднюю стадию (таким образом, ставить выражение). Настоящий этап эффективно действует как генератор кода, который составляет (и, возможно, выполняет) программу следующего этапа.
Однако Таха и Шеард пишут (выделение мое):
Многоэтапная программа - это программа, которая включает генерацию, компиляцию и выполнение кода внутри одного и того же процесса. Многоступенчатые языки выражают многоступенчатые программы. Постепенное и, следовательно, многоэтапное программирование решает проблему решений общего назначения, которые не оплачивают интерпретирующие накладные расходы во время выполнения.
Затем они ссылаются на несколько ссылок на более старые работы, якобы показывающие, что постановка является эффективной, что говорит о том, что концепция еще старше. Они не дают ссылку на сам термин.
Эти утверждения кажутся ортогональными, если не противоречивыми; может быть, то, что пишут Ромпф и Одерский, является приложением того, что предлагают Таха и Шеард, но, возможно, это другой взгляд на то же самое. Кажется, они согласны с тем, что важным моментом является то, что программы (пере) пишут свои части во время выполнения, но я не знаю, является ли это необходимой и / или достаточной способностью.
Итак, что такое постановка, соответственно, интерпретации постановки в этом контексте? Откуда этот термин?
- Облегченная модульная организация: прагматический подход к генерации кода времени выполнения и скомпилированным DSL Т. Ромпфом и М. Одерским (2012)
- MetaML и многоэтапное программирование с явными аннотациями W. Taha и T. Sheard (2000)
@generated function
s: julia.readthedocs.org/en/latest/manual/metaprogramming/…