Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz._1.doc
Скачиваний:
3
Добавлен:
05.05.2019
Размер:
201.73 Кб
Скачать

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

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

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

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

  • Функціональність — модуль повинен виконувати закінчену функцію

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

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

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

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

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

Слід мати на увазі, що макропроцесор виконує обробку тексту; це означає, з одного боку, що він «не розуміє» операторів мови програмування і «не знає» змінних програми, з іншого, що всі оператори і змінні макромови (тих виразів в програмі, які адресовані макропроцесору) в проміжному модулі вже відсутні і для подальших етапів обробки «не видимі».

Так, якщо макропроцесор замінив в програмі деякий текст A на текст B, то транслятор вже бачить лише текст B, і не знає, був цей текст написаний програмістом «своєю рукою» або підставлений макропроцесором.

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

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

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

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

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

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

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

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

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

Оскільки результатом трансляції є модуль на мові, близькій до машинної, в ньому вже не залишається ознак того, на якій початковій мові був написаний програмний модуль. Це створює принципову можливість створювати програми з модулів, написаних на різних мовах. Специфіка початкової мови, проте, може позначатися на фізичному представленні базових типів даних, способах звернення до процедур/функцій тощо. Для сумісності різномовних модулів повинні витримуватися спільні угоди. Більша частина об'єктного модуля — команди і дані машинної мови саме в тій формі, в якій вони існуватимуть під час виконання програми. Проте, програма в загальному випадку складається з багатьох модулів. Оскільки транслятор обробляє лише один конкретний модуль, він не може належним чином обробити ті частини цього модуля, в яких запрограмовані звернення до даних або процедур, визначених в іншому модулі. Такі звернення називаються зовнішніми посиланнями. Ті місця в об'єктному модулі, де містяться зовнішні посилання, транслюються в деяку проміжну форму, що підлягає подальшій обробці. Говорять, що об'єктний модуль є програмою на машинній мові з невизначеними зовнішніми посиланнями. Визначення зовнішніх посилань виконується на наступному етапі підготовки, який забезпечується редактором зв'язків (компонувачем). Редактор зв'язків сполучає разом всі об'єктні модулі, що входять в програму. Оскільки редактор зв'язків «бачить» вже всі компоненти програми, він має можливість обробити ті місця в об'єктних модулях, які містять зовнішні посилання. Результатом роботи редактора зв'язків є завантажувальний модуль.

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

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

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

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

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

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

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

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

º Макрообробка і трансляція ; º Редагування зв'язків ; º Відладка.

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

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