Изменения уровня от языка к языку
Следует ожидать,что чем более универсальным будет язык общего назначения, тем больше проявиться способов его использования для данной цели. Поскольку многие из этих способов находятся на различных уровнях , с ростом среднего значения увеличатся и отклонения от него. Кроме этой гипотезы, вводится еще одна, более существенная, согласно которой среднее значение, полученное на ряде программ, свидетельствует о количественном росте при увеличении развитости языка. Для проверки второй гипотезы необходимо иметь интуитивно упорядоченный список языков. Так, принято считать что Фортран выше языка ассемблера, ПЛ-1 выше Фортрана, а английский язык еще выше ,чем ПЛ-1. Результаты, полученные рядом исследователей, рассматривавших реализации одной группы алгоритмов на различных языках, включая английский, сведены в табл.6.
Таблица 6.
Язык | l | Отклонения |
Английский | 2,16 | 0,74 |
ПЛ-1 | 1,53 | 0,92 |
Алгол | 1,21 | 0,74 |
Фортран | 1,14 | 0,81 |
Ассемблер | 0,88 | 0,42 |
Значение уровня языка.
В течение последних десятилетий значительная доля усилий специалистов в области языков программирования была направлена на разработку и реализацию новых языков и часто при этом выполнялось усовершенствование ранее существовавших языков. Но из-за отсутствия количественного измерения вывод о реальном улучшении языка был весьма субъективным. Без принятия гипотезы, соотносящей конкретный язык с мысленной работой по его использованию, нельзя с уверенностью сказать, положительно или отрицательно его введение. Объединяя уравнение (4.7) с уравнением работы, получаем, что число элементарных мысленных различений, требуемых для написания некоторой программы, должно подчиняться ²закону обратных квадратов² относительно уровня языка, или
Е = V*3/l2 (4.8)
Из соотношений Е = V2/V* и V = V*/L следует, что Е = V*/L2, откуда при помощи равенства L = l/V* выводим (4.8). Для небольшой выборки программ, написанных на двух языках, можно определить средние значения l и с их помощью найти сравнительную трудоемкость. Так выигрыш во времени программирования при переходе от языка низкого уровня l1 к языку высокого уровня l2 определяется соотношением
ΔT/T = (T1 - T2) / T1 = 1 - T2 / T1 = 1 - (l1)2 / (l2)2 (4.9)
Тогда по данным табл.6 при переходе от Ассемблера к Фортрану выигрыш во времени составит 40% , от Ассемблера к ПЛ-1 - 67%.
Важность понятия уровня языка подтверждается также из уравнения (4.8) следующими обстоятельствами. Поскольку потенциальный объем V* и среднее значение l должны быть известны или вычислимы сразу после определения программистского проекта и выбора языка, это дает рациональную основу для планирования времени программирования.
С другой стороны, подставляя в (4.7) выражение для L из (3.2), получим
l = (V*)2 / V (4.10)
Из этого выражения видно, что для постоянства l увеличение объема программы должно квадратично зависеть от увеличения количества информации по внешним связям. Поэтому алгоритмически сложные программы вычисления малого числа переменных будут давать значительно более низкое значение l, чем программы вычисления большого числа
переменных по элементарным выражениям. Поэтому применение метрики l для сравнения языков программирования следует делать только для конкретной предметной области и близких типов задач.