Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мороз С.П. Ответы 46-50.docx
Скачиваний:
8
Добавлен:
05.03.2016
Размер:
27.01 Кб
Скачать

47.Задачі інтерпретатора та компілятора

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

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

Інтерпретатори можуть працювати як з вихідним кодом програми (англ. source code), написаним мовою програмування, так і з байт-кодом (інтерпретатори байт-коду)

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

Компілятор (англ. Compiler від англ. to compile збирати в ціле) - комп'ютерна програма (або набір к. програм), що перетворює (компілює) програмний код, написаний певною мовою програмування (мова джерела, англ. source language), на семантично еквівалентний код в іншій мові програмування (мова цілі, англ. target language), який, як правило, необхідний для виконання програми машиною, наприклад, комп'ютером.

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

Історично компілятором називалась програма що зв'язувала підпрограми, чим й зумовлено походження слова. Сьогодні це завдання виконує компонувальник.

Для виконання програма не завжди повинна бути перекладена компілятором, існує також інший принцип: покрокове виконання програмних інструкцій інтерпретатором.

Концептуально компілятор працює фазово, в процесі кожної фази відбувається перетворення початкової програми з одного представлення до іншого. На практиці фази можуть об'єднуватись і деякі проміжні представлення можуть не будуватись в явному вигляді. Типове розбиття компілятора на фази:

Лексичний аналізатор

Синтаксичний аналізатор

Семантичний аналізатор

Генератор проміжного коду

Оптимізатор

Генератор цільового коду.

48.Процедурне програмування. Недоліки.

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

Можливі переваги:

  • Можливість повторного використання одного і того ж коду з різних місць програми без його копіювання.

  • Легше відслідкувати потік виконання програми, ніж у випадку використання операторів GOTO або JUMP, що можуть зробити з складної програми так званий «спагетті-код».

  • Можливість підтримки модульності і структурності.

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

Як би ефективно не використовувався структурний підхід, він не дозволяє в достатній мірі спростити великі складні проекти. Коли розмір програми великий, список команд стає доволі громіздким. Небагато програмістів здатні утримувати в голові більш ніж 500 рядків програмного коду.

Крім того, у процедурній програмі існує ще й проблема неконтрольованого доступу до даних. В чому суть цієї проблеми? В процедурній програмі, що написана, наприклад, мовою С, існує два типи даних. Локальні дані знаходяться всередині функції й призначені для використання виключно цією функцією. Якщо існує необхідність спільного використання одних і тих самих даних кількома функціями, то дані повинні бути оголошені як глобальні. А це, як правило, стосується тих даних програми, які є найбільш важливими. Великі програми зазвичай містять велику кількість функцій та глобальних змінних. Проблема процедурного підходу полягає в тому, що число можливих зв’язків між глобальними змінними та функціями може бути дуже великим.

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