Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OPORNUY_TSPIS.doc
Скачиваний:
9
Добавлен:
12.11.2018
Размер:
4.78 Mб
Скачать

1.4 Етапи підготовки програми

При розробці програм, а тим паче складних, використовується принцип модульності, розбиття складної програми на складові частини, кожна з яких може підготовлятися окремо. Модульність є основним інструментом структурування програмного виробу, що полегшує його розробку, налагодження та супроводження.

Дамо визначення програмного модуля згідно з діючим державним стандартом.

Програмний модуль - це програма або функціонально завершений фрагмент програми, призначений для зберігання, трансляції, поєднання з іншими програмними модулями та завантаження в оперативну пам'ять.

При обранні модульної структури мають враховуватися такі основні міркування:

  • функціональність - модуль має виконувати закінчену функцію;

  • незв'язуваність - модуль повинен мати мінімум зв'язків з іншими модулями, зв'язок через глобальні змінні та області пам'яті небажаний;

  • специфічність - вхідні та вихідні параметри модуля повинні чітко формулюватися.

На рис.1.1 показано етапи, які проходить програма від її написання до виконання.

Програма пишеться у вигляді початкового модуля (ПМ).

Дамо визначення початкового модуля згідно з діючим державним стандартом.

Початковий модуль - це написаний початковою мовою програмний модуль, який обробляється транслятором як ціле, достатнє для проведення трансляції.

Першим (не для всіх мов програмування обов'язковим) етапом підготовки програми є обробка її макропроцесором (або препроцесором). Макропроцесор обробляє текст програми, і на виході його отримується нова редакція тексту (дивись ПМ* на рис. 1.1). У більшості систем програмування макропроцесор суміщений з транслятором, і для програміста його робота і проміжний ПМ* невидимі. Слід мати на увазі, що макропроцесор виконує обробку тексту. Це означає, з одного боку, що він не інтерпретує операторів мови програмування та змінних програми, а з іншого боку, що усі оператори та змінні макромови (тих виразів у програмі, які адресовані макропроцесору) в проміжному ПМ* вже відсутні і для подальших етапів обробки невидимі. Так, якщо макропроцесор замінив у програмі деякий текст A на текст B, то транслятор вже має тільки текст B і не знає, був цей текст написаний програмістом чи він підставлений макропроцесором.

Рис. 1.1 - Етапи проходження програми

Наступним етапом є трансляція.

Дамо визначення трансляції згідно з діючим державним стандартом.

Трансляція - це перетворення програми, поданої однією мовою програмування, у програму, подану іншою мовою програмування, у певному сенсі рівнозначну першій.

Як правило, результатом роботи транслятора є програма, подана на машинній мові цільової обчислювальної системи (ОС). Цільова ОС - це та ОС, на якій програма буде виконуватися.

Дамо визначення машинної мови згідно з діючим державним стандартом.

Машинна мова - це мова програмування, яка призначена для подання програми у формі, що дозволяє виконувати її безпосередньо технічними засобами обробки інформації.

Транслятори - загальна назва для програм, що виконують трансляцію. Вони підрозділяються на асемблери та компілятори залежно від початкової мови програми, яку вони обробляють. Асемблери працюють з автокодами або мовами асемблера, компілятори - з мовами високого рівня.

Дамо визначення автокоду, мови асемблера і мови високого рівня згідно з діючим державним стандартом.

Автокод - це символьна мова програмування, речення якої за своєю структурою в основному подібні до команд та оброблюваних даних конкретної машинної мови.

Мова асемблера - це мова програмування, яка являє собою символьну форму машинної мови з низкою можливостей, характерних для мови високого рівня (зазвичай включає у себе макрозасоби).

Мова високого рівня - це мова програмування, поняття якої і структура програми, написаній на цій мові, зручні для сприйняття людиною.

Дамо визначення об'єктного модуля (ОМ) згідно з діючим державним стандартом.

Об'єктний модуль - це програмний модуль, що отримується в результаті трансляції початкового модуля.

Оскільки результатом трансляції є модуль на мові, близькій до машинної, в ньому вже не залишається ознак того, якою початковою мовою був написаний програмний модуль. Це дає принципову можливість створювати програми із модулів, написаних різними мовами. Специфіка початкової мови, однак, може позначитися на фізичному поданні базових типів даних, способах звернення до процедур або функцій тощо. Для сумісності різномовних модулів мають витримуватися загальні узгодження.

Більша частина об'єктного модуля - команди та дані машинної мови саме у тій формі, в якій вони будуть існувати під час виконання програми. Однак програма в загальному випадку складається з багатьох модулів. Оскільки транслятор обробляє тільки один конкретний модуль, він не може належним чином обробити ті частини цього модуля, в яких запрограмовані звернення до даних або процедур, визначених в інших модулях. Такі звернення називають зовнішніми посиланнями. Ті місця в об'єктному модулі, де містяться зовнішні посилання, транслюються у деяку проміжну форму, що підлягає подальшій обробці. Таким чином, об'єктний модуль являє собою програму на машинній мові з незадовільненими зовнішніми посиланнями.

Задовільнення зовнішніх посилань виконується на наступному етапі підготовки, який забезпечується редактором зв'язків або компонувальником (укладачем). Редактор зв'язків з'єднує разом усі об'єктні модулі, що входять до складу програми. Оскільки редактору зв'язків доступні всі об'єктні компоненти програми, він має можливість обробити ті місця в об'єктних модулях, які містять зовнішні посилання. Результатом роботи редактора зв'язків є завантажуваний, тобто виконуваний модуль.

Дамо визначення завантажуваного модуля (ЗМ) згідно з діючим державним стандартом [5].

Завантажуваний модуль - це програмний модуль, поданий у формі, придатній для завантаження в оперативну пам'ять для виконання.

Завантажуваний модуль зберігається у вигляді файла на зовнішній пам'яті. Для виконання програма має бути перенесена (завантажена) до оперативної пам'яті. Іноді при цьому потрібна деяка додаткова обробка (наприклад, настроювання адрес у програмі на ту область оперативної пам'яті, в яку програма завантажилась). Ця функція виконується завантажувачем, який зазвичай входить до складу операційної системи.

Можливий також варіант, в якому редагування зв'язків виконується при кожному запуску програми на виконання та сполучається (поєднується) із завантаженням. Це робить зв'язуючий завантажувач. Варіант зв'язування при запуску більш витратний, оскільки витрати на зв'язування тиражуються при кожному запуску. Але він забезпечує:

  • велику гнучкість у супроводі, оскільки дозволяє змінювати окремі об'єктні модулі програми, не змінюючи решти модулів;

  • економію зовнішньої пам'яті, оскільки об'єктні модулі, що використовуються у багатьох програмах, не копіюються у кожний завантажуваний модуль, а зберігаються в одному екземплярі.

Варіант інтерпретації передбачає пряме виконання початкового модуля.

Дамо визначення інтерпретації згідно з діючим державним стандартом.

Інтерпретація - це реалізація сенсу деякого синтаксично закінченого тексту, поданого конкретною мовою.

Інтерпретатор читає з початкового модуля чергове речення програми, перекладає його на машинну мову та виконує. Усі витрати на підготовку тиражуються при кожному виконанні; отже, програма, що інтерпретується, принципово менш ефективна, ніж та, що транслюється. Однак інтерпретація забезпечує зручність розробки, гнучкість у супроводі та переносимість.

Приклади інтерпретаторів: мови процедур (shell, REXX), JVM.

Не обов'язково підготовка програми має проводитись на тій же обчислювальній системі і у тому ж операційному середовищі, в яких програма виконуватиметься. Системи, які забезпечують підготовку програм у середовищі, що відрізняється від цільового, називаються крос-системами. У крос-системі може виконуватися вся підготовка або її окремі етапи:

  • макрообробка та трансляція;

  • редагування зв'язків;

  • налагодження.

Типове застосування крос-систем передбачене для тих випадків, коли цільове обчислювальне середовище просто не має ресурсів, необхідних для підготовки програм (наприклад, вбудовані системи).

Програмні засоби, що забезпечують налагодження програми на цільовій системі, можна також розглядати як окремий випадок крос-системи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]