Генерирующие программы для улучшения подпрограмм
Как впервые констатировал Рутисхаузер, «выпрямленная» программа, освобожденная от служебных команд и служебных операций, выполняется значительно быстрее, чем программа с циклами и подпрограммами. Программа, составленная так, что все возможные ее переменные воспринимаются как программные параметры, будет выполняться значительно медленнее из-за потерь времени на выполнение служебных команд изменения адресов в соответствии с изменением этих параметров. Так, программа, написанная специально для обращения матрицы 10-порядка, хотя и выполнится быстрее, чем для общего случая n-го порядка, может занять больше места, чем программа, составленная для этого общего случая.

Разумное сочетание приемов «выпрямления» или «линеаризации» циклов с составлением программ для определенных значений основных параметров может обеспечить составление подпрограмм, занимающих минимум места или требующих минимального времени или минимизирующих некоторую функцию этих двух характеристик. Генерирующие программы для подпрограмм выполняют этот процесс автоматически, ориентируясь на те параметры, для которых задача должна решаться. Идея создания таких программ принадлежит Хопер и ее сотрудникам.
Положим для решения конкретной задачи требуется подпрограмма вычисления синуса с точностью в заданном диапазоне изменения аргумента. Генерирующая программа для синуса берет эту заданную величину е и рассчитывает коэффициенты чебышевского приближения, необходимые для достижения этой точности, а затем выдает на печать (перфоратор) наиболее оптимальную подпрограмму вычисления полинома требуемой степени.
Положим необходимо выдать на печать большое количество чисел с знаками в каждой строке с пробелами через т строк, причем каждое число будет иметь знаков перед десятичной запятой.
Источник: delete-it