Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике.doc
Скачиваний:
43
Добавлен:
02.05.2014
Размер:
431.62 Кб
Скачать

Оптимизирующие компиляторы

Эффективность важна на 2-х стадиях разработки программы

  1. компиляция

  2. выполнение

Если компилятор работает быстро, то он обычно сост-т программу, к-ая вып-ся медленно. Компиляторы, создающие эффективную объектную программу, обычно бывают большими по объему и работают медленно. В связи с этим фирмы-разработчики ЯП в наст время исп-т по 2 компиляторадля кажд входного языка. Т.к.1-ый компиляторработает быстро, но создает не эффективную программу, этот компилятор исп-ся для отладки программ.2-ой компиляторработает медленно, но создает эффективную объектную программу, он исп-ся для создания объектных модулей.

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

Существует 2 типа компиляции:

  1. машинно-зависимая

  2. машинно-независимая

Машинно-зависимая– способ компиляции, результат к-ой зависит от испол машины.

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

Шаги оптимизации:

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

  2. Если оптимизация необходима, попытайтесь вначале исп-ть оптимизирующий компилятор.

  3. Определяйте критич области в программе, подлежащие оптимизации.

  4. Применяйте локальную оптимизацию к критич областям в программе.

Советы программисту:

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

  2. Определять требования эффективности на стадии проектирования.

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

  4. Применяйте оптимизир. компиляторы

  5. Профилируйте программу

  6. Там, где это необходимо, избегайте смешанных типов данных.

  7. Группируйте записи в эффект блоки для ввода/вывода.

  8. Используйте загрузочные модули.

Метод структурного программирования (мсп).

Важны форма и дисциплина в программ-ии.

Цели СП:

  1. Избавиться от плохой структуры программы

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

На сегодняшний день стоимость сопровождения и модификации программы в 3-5 раз выше, чем стоимость создания. Основоположником СП явл-ся Дейкебра.

Структурный подход к программированию состоит из 3 частей:

  1. Нисходящая разработка

  2. Структурное программирование

  3. Сквозной структурный подход

Нисходящая разработкапроцесс, состоящий из 3 шагов:

  1. Планирование

  2. Проектирование

  3. Реализация

Каждый из этих шагов – это определенный шаг жизненного цикла системы.

Этап планирования.

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

Наилучшая последовательность разработки модулей появл-ся путем комбинации 2-х подходов:

  1. Иерархического

  2. Операционного

1) Иерархический– реализация этого прогр-ия и тестирования модулей, опред-ся их расположением в схеме, иерархией программной системы.

Сначала программируются все модули одного уровня (верхнего), а затем нижнего.

Модуль– последовательность логически связанных проектов, оформленных как отдельная часть программы.

Свойство модулей:

  1. Модуль возникает в рез-те сепаратных (совместных) компиляций

  2. На внутренность модуля можно ссылаться с помощью имени, называемом именем модуля.

  3. Модуль должен возвращать управление того, кто его непосредственно вызывает.

  4. Модуль может обращаться к другим модулям.

  5. Модуль должен иметь 1 вход и 1 выход, что гарантирует замкнутость модуля и упрощает сопровождение программы.

  6. Модуль обладает единственной ф-цией – это вполне опред преобраз исх данных в рез-т в процессе выполнения данного модуля, иными словами, модуль программы системы – это элемент программы, вып-щей самост задачу.