Экономическая информатика-стр.353

Учитывая, что эффективность программ, получаемых с помощью высокоуровневых языков программирования, может значительно уступать аналогичным программам, составленным на языках низкого уровня, в ряде случаев используются оптимизирующие трансляторы (оптимайзеры), которые после завершения компиляции осуществляют оптимизацию объектного модуля.

Например, хороший компилятор способен распознать небрежность программиста и исключить из цикла «статические» вычисления. Под «статическими» вычислениями понимается выполнение в цикле определенной операции, результат которой не зависит от итераций цикла. Распознав такую конструкцию, компилятор выводит ее за рамки цикла. Этот тип оптимизации называется перемещением выражений.

Другим более сложным видом оптимизации является устранение неиспользуемого кода. Компилятор находит операторы, которые не выполняются ни при каких условиях, и не включает их в исполняемый код.

В общем случае в зависимости от выигрыша в производительности и временных затрат все виды оптимизации можно разделить на несколько уровней. Первый и второй уровни оптимизации, как правило, повышают быстродействие на 10 - 15% при минимальных затратах. Третий уровень оптимизации позволяет увеличить производительность еще на 5%, однако это обойдется значительно дороже.

Таким образом, выбор типа алгоритмического языка (см. рис. 7.3) зависит от многих факторов: назначения, удобства написания исходных программ, эффективности получаемых объектных программ и т.п. Для ПК ведущее место в настоящее время занимают языки высокого уровня, например различные версии языков: Бейсик, Паскаль, Фортран, Кобол, АПЛ, Ада, Си и т.д.