Туманные вычисления
- 1 year ago
- 0
- 0
Частичные вычисления ( англ. partial evaluation, PE ) в информатике — стратегия вычислений , которая заключается в получении более эффективного кода на основе использования заданной информации о части аргументов и однократного выполнения той части кода, которая зависит только от известной части аргументов и не зависит от неизвестной части . Является разновидностью специализации , т. е. оптимизации программ на основе использования заданной информации о значении части переменных.
Частичные вычисления могут производиться в неприменённой функции. При наличии побочных эффектов полное частичное вычисление может приводить к нежелательным результатам, поэтому системы, поддерживающие частичные вычисления, производят их лишь для чистых выражений (выражений без побочных эффектов) в функциях.
Самое простое применение частичных вычислений — создание новых программ, которые работают быстрее, чем исходные, и при этом гарантированно обладают таким же поведением.
Компьютерная программа prog рассматривается как преобразование входных данных в выходные данные:
где — статические данные — представляет собой часть входных данных, известную во время компиляции .
Частичный вычислитель преобразует в путем предварительного вычисления всех статических входных данных в время компиляции. называется остаточной программой. Она должна работать более эффективно, чем исходная программа.
Примером использования частичных вычислений является случай, когда prog — интерпретатор языка программирования . Эта ситуация впервые была описана в 1970-х годах Ёсихико Футамурой . Если I static является исходным кодом на интерпретируемом языке, предназначенным для работы внутри интерпретатора prog , то специализация интерпретатора относительно него создает prog * — интерпретатор, запускающий только исходный код I static , не требующий его повторного написания и работающий быстрее, чем исходная комбинация интерпретатора prog и исходного кода I static . Фактически prog * является скомпилированной версией I static .
Эта техника известна как первая проекция Футамуры, которых существует три: