Частичная оценка
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Май 2013 г. ) |
Стратегии оценки |
---|
В вычислительной технике частичная оценка — это метод нескольких различных типов оптимизации программ по специализации . Самое простое применение — создание новых программ, которые работают быстрее оригиналов, но при этом гарантированно ведут себя таким же образом.
Компьютерная программа рассматривается как отображение входных данных в выходные данные:
где статические данные — это часть входных данных, известная во время компиляции.
Частичный вычислитель преобразует в путем предварительного вычисления всех статических входных данных во время компиляции. называется «остаточной программой» и должна работать более эффективно, чем исходная программа. Говорят, что акт частичной оценки «остаточно» к .
Проекции Футамуры [ править ]
Особенно интересный пример использования частичной оценки, впервые описанный в 1970-х годах Ёсихико Футамурой: [1] это когда prog является интерпретатором языка программирования .
Если I static — это исходный код, предназначенный для работы внутри этого интерпретатора, то частичная оценка интерпретатора по отношению к этим данным/программе создает prog *, версию интерпретатора, которая запускает только этот исходный код, написанную на языке реализации интерпретатора. интерпретатор, не требует повторной поставки исходного кода и работает быстрее, чем исходная комбинация интерпретатора и исходного кода. В этом случае prog * фактически является скомпилированной версией I static .
Эта техника известна как первая проекция Футамуры, их три:
- Специализация интерпретатора для данного исходного кода с получением исполняемого файла.
- Специализация специализатора для интерпретатора (как применяется в № 1), в результате чего получается компилятор.
- Специализация специализатора для себя (как это сделано в пункте 2), получение инструмента, который может преобразовать любой интерпретатор в эквивалентный компилятор.
Они были описаны Футамурой на японском языке в 1971 году. [2] и на английском языке в 1983 году. [3]
См. также [ править ]
- Выполнение функции во время компиляции
- Мемоизация
- Частичное применение
- Специализация по алгоритмам времени выполнения
- s mn Теорема
- Снижение прочности
- Template metaprogramming
Ссылки [ править ]
- ↑ Сайт Ёсихико Футамуры .
- ^ «Частичная оценка вычислительного процесса --- Подход к компилятору-компилятору», Труды Института инженеров электроники и связи Японии , 54-C : 721–728, 1971.
- ^ Футамура, Ю. (1983). «Частичное вычисление программ». Симпозиумы RIMS по науке о программном обеспечении и инженерии . Конспекты лекций по информатике. Том. 147. Спрингер. стр. 1–35. дои : 10.1007/3-540-11980-9_13 . hdl : 2433/103401 . ISBN 3-540-11980-9 .
Общие ссылки [ править ]
- Футамура, Ю. (1999). «Частичная оценка вычислительного процесса — подход к компилятору-компилятору». Вычисления высшего порядка и символьные вычисления . 12 (4): 381–391. CiteSeerX 10.1.1.10.2747 . дои : 10.1023/А:1010095604496 . S2CID 12673078 .
- Консель, Чарльз; Дэнви, Оливье (1993). «Учебные заметки по частичной оценке». POPL '93: Материалы 20-го симпозиума ACM SIGPLAN-SIGACT по принципам языков программирования . Ассоциация вычислительной техники. стр. 493–501. CiteSeerX 10.1.1.114.7330 . дои : 10.1145/158511.158707 . ISBN 0897915607 . S2CID 698339 .
Внешние ссылки [ править ]
- Джонс, Нил Д.; Гомар, Карстен К.; Сестофт, Питер (1993). Частичная оценка и автоматическая генерация программы . Прентис Холл. ISBN 9780130202499 .
- Дэнви, О., изд. (1999). «Частичная оценка и манипулирование программой на основе семантики PEPM'99» (PDF) . CiteSeerX 10.1.1.164.2284 .
- Вельдхейзен, Тодд Л. (1999). «Шаблоны C++ как частичная оценка». ПЭПМ'99 . стр. 15–. arXiv : cs/9810010 .
- Применение динамической частичной оценки к динамическим, рефлексивным языкам программирования