Трансляція і інтерпретація програм

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

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

Тому виникає питання: як організувати виконання таких програм на вашому комп'ютері? Для цього завдання існує два основних рішення.

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

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

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

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

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

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

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

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

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

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