Расчет времени, необходимого для программирования.

Рассмотрим понятие, введенное психологом Джоном Страудом в работе «Тонкая структура психологического времени». Дж.Страуд определил «момент» как время, требуемое человеческому мозгу для выполнения наиболее элементарного различения. Он обнаружил, что в течение времени бодрствования человек воспринимает эти «моменты» со скоростью «от пяти до двадцати раз» в секунду. Следует отметить, что в диапазон приведенных Страудом цифр попадает и число кадровв секунду, превращающее кинофильм из последовательности отдельных снимков в непрерывное изображение. Обозначая через S число страудовских «моментов» в секунду, мы можем записать

5 £ S £ 20 в сек.

В дальнейшем S называется числом Страуда. Естественно, что любой человек, занимающийся реализацией алгоритма, может в зависимости от степени своей сосредото-ченности отвлечь какую-то часть мысленных различений на посторонние предметы. Пользуясь терминологией вычислительной техники, можно сказать, что, если он находится «в режиме разделения времени», S представляет собой лишь верхнюю границу. С другой стороны, если программист выполняет эквивалент машинной операции «запретить все прерывания» и сосредоточивает внимание на программировании, то применимо действительное значение S.

Для того чтобы перевести в единицы времени уравнение (4.2), имеющее размерность двоичных разрядов или различений, разделим обе его части на число различений в единицу времени. В результате получим

T^ = Расчет времени, необходимого для программирования. - student2.ru = Расчет времени, необходимого для программирования. - student2.ru = Расчет времени, необходимого для программирования. - student2.ru (4.4)

Символ ^ здесь указывает на то, что с помощью этого уравнения вычисляется приближенное, а не наблюдаемое время программирования.Уравнение (4.4) можно выразить через основные параметры, если подставить в него вместо V правую часть уравнения (2.1), а вместо L - правую часть уравнения (3.5)

T = Расчет времени, необходимого для программирования. - student2.ru (4.5)

При этом, естественно, Расчет времени, необходимого для программирования. - student2.ru =2.

В предыдущем выводе подразумевалось, что все программы совершенны, т. е. не имеют несовершенств. Хотя это допущение более или менее обосновано для опубли-кованных программ, оно необязательно. Поэтому откажемся от него по крайней мере в первом приближении, подставив Расчет времени, необходимого для программирования. - student2.ru вместо N в уравнение (4.5). Если при этом Расчет времени, необходимого для программирования. - student2.ru задается уравнением длины, приходим к выражению

Расчет времени, необходимого для программирования. - student2.ru , (4.6)

где, за исключением числа Страуда S, все параметры в правой части доступны непосред-ственному измерению для любой реализации алгоритма.

Уровень языка.

Материал, изложенный в лекции 3, выявил полезное соотношение между уровнем программы L и ее объемом V. Для любого алгоритма, который переводится с одного языка на другой, с увеличением объема уровень уменьшается в той же пропорции. В результате произведение L на V равняется потенциальному объему V* данного алгоритма. С другой стороны, если язык реализации остается одним и тем же, а разрешено менять сам алгоритм, имеется другое, но похожее соотношение. В этом случае с увеличением потенциального объема V* уровень программы L уменьшится в том же отношении. Следовательно, произведение L на V* остается неизменным для любого языка. Это произведение, называемое уровнем языка, обозначается через l и записывается в виде:

l = L´V* (4.7)

Наши рекомендации