
Подготовка программных средств
363
Например, хороший компилятор способен распознать небреж-
ность программиста и исключить из цикла «статические» вычис-
ления. Под «статическими» вычислениями понимается выполне-
ние в цикле определенной операции, результат которой не
зависит от итераций цикла. Распознав такую конструкцию, ком-
пилятор выводит ее за рамки цикла. Этот тип оптимизации назы-
вается перемещением выражений.
Другим более сложным видом оптимизации является устране-
ние неиспользуемого кода. Компилятор находит операторы, ко-
торые не выполняются ни при каких условиях, и не включает их в
исполняемый код.
В общем случае в зависимости от выигрыша в производитель-
ности и временных затрат все виды оптимизации можно разде-
лить на несколько уровней. Первый и второй уровни оптимиза-
ции, как правило, повышают быстродействие на
10
-
15%
при ми-
нимальных затратах. Третий уровень оптимизации позволяет
увеличить производительность еще на 5%, однако это обойдется
значительно дороже.
Таким образом, выбор типа алгоритмического языка
(см.
рис.
7.3) зависит от многих факторов: назначения, удобства написа-
ния исходных программ, эффективности получаемых объектных
программ и т.п. Для ПК ведущее место в настоящее время зани-
мают языки высокого уровня, например различные версии язы-
ков:
Бейсик, Паскаль, Фортран, Кобол, АПЛ, Ада, Си и т.д.
Среди них доминирующая роль отводится процедурно-ориен-
тированным языкам, называемым также универсальными (хотя
некоторые из них, например Фортран, Кобол, Бейсик и т.п., и раз-
рабатывались с ориентацией на конкретную сферу применения).
Абсолютное большинство языков программирования в насто-
ящее время составляют процедурные языки, с помощью которых
программист определяет последовательность реализации событий
в объектной программе путем.последовательной записи предло-
жений в исходной программе. Иными словами, программирова-
ние на этих языках подразумевает необходимость описания не
только того, что необходимо получить в результате решения за-
дачи, но и того, как это необходимо осуществить.
Одним из главных направлений совершенствования языков
программирования для задач экономического управления было
стремление к разработке таких языков, в которых до минимума
сводилась (а в идеале вообще отсутствовала) проблема как. Есте-
ственно, что такие языки не могут быть процедурными.