Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы по ЭСТП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
399.63 Кб
Скачать

19. Понятие эффективности программы. Выбор между эффективностью и удобочитаемостью. Оптимизирующие компиляторы.

ЭФФЕКТИВНОСТЬ ПРОГРАММ

Основной задачей программирования является создание пра­вильных, а не эффективных программ. Эффективная программа не нужна, если она не обеспечивает правильных результатов. Это правило Ван Тассела.

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

Если программа неправильна, не имеет значения, какова ее эффективность.

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

Определяйте требования к эффективности программы на стадии проектирования.

ЭФФЕКТИВНОСТЬ ИЛИ УДОБОЧИТАЕМОСТЬ?

Многие методы, делающие программу эффективной, не наносят ущерба ее удобочитаемости. Эти методы следует использовать всегда. Но так как я намереваюсь сделать полный обзор методов эффективного программирования, замечу, что некоторые меры по повышению эффективности могут быть просто вредными для по­лучения удобочитаемой программы.

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

Лишь в особых случаях программу следует делать более эф­фективной: программа либо не помещается в памяти, либо слиш­ком долго выполняется. Или же программа должна быть включена в библиотеку и часто использоваться. В этом случае эффективность становится очень важным фактором и ей отдают предпочтение в ущерб удобочитаемости,

Удобочитаемость программы обычно более важна, чем эффективность.

ОПТИМИЗИРУЮЩИЕ КОМПИЛЯТОРЫ

Эффективность важна на двух стадиях разработки програм­мы: компилирования и выполнения. Если компилятор работает быстро, то он обычно составляет программу, которая выполняется медленно. Компиляторы, создающие эффективную объектную про­грамму, обычно бывают большими и работают медленно, так как оптимизируют объектную программу.

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

WATFIV — быстро работающий компилятор для языка ФОРТ­РАН, который располагает хорошими средствами отладки, но соз­дает относительно медленную объектную программу.

WATBOL — быстро работающий отладочный-компилятор для программ, написанных на КОБОЛе. Оба компилятора имеются в университете г. Ватерлоо (Канада, Онтарио, Ватерлоо, N2L 3G1).

ALGOL W—быстро работающий компилятор для языка АЛГОЛ, которым располагает Стэнфордский университет. Существует не­сколько компиляторов для языка ПЛ/1. ПЛ/С— быстро работаю­щий отладочный компилятор, имеющийся в Корнеллском универ­ситете, ПЛ/1-оптимизатор — оптимизирующий компилятор вычис­лительных систем фирмы IBM. Оптимизаторы для языка КОБОЛ обсуждаются в книге М. Стэнли и др.)