Компілятор проти перекладача: повна різниця між компілятором та перекладачем

Зміст:

Anonim

Що таке компілятор?

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

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

Що таке перекладач?

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

КЛЮЧОВА РІЗНИЦЯ

  • Компілятор перетворює код, написаний мовою програмування високого рівня, у машинний код одразу перед запуском програми, тоді як Інтерпретатор охоплює кожен вираз програми високого рівня, один за одним, у машинний код під час запуску програми.
  • Скомпільований код працює швидше, тоді як інтерпретований код працює повільніше.
  • Компілятор відображає всі помилки після компіляції, з іншого боку, Інтерпретатор відображає помилки кожного рядка по черзі.
  • Компілятор базується на моделі зв’язування-завантаження перекладу, тоді як Interpreter - на основі методу інтерпретації.
  • Компілятор бере всю програму, тоді як Інтерпретатор бере один рядок коду.

Різниця між упорядником та перекладачем

Основа різниці Укладач Перекладач
Кроки програмування
  • Створіть програму.
  • Компіляція проаналізує або проаналізує всі мовні твердження на предмет їх правильності. Якщо неправильно, видає помилку
  • Якщо помилки не буде, компілятор перетворить вихідний код у машинний код.
  • Він пов'язує різні файли коду в програму, що запускається (відому як exe)
  • Запустіть програму
  • Створіть програму
  • Немає зв’язку файлів або генерації машинного коду
  • Вихідні оператори виконуються рядок за рядком ПІД час виконання
Перевага Код програми вже переведений у машинний код. Таким чином, час виконання коду менше. Перекладачі зручніші у використанні, особливо для початківців.
Недолік Ви не можете змінити програму, не повернувшись до вихідного коду. Інтерпретовані програми можуть працювати на комп’ютерах, що мають відповідний інтерпретатор.
Машинний код Зберігайте машинну мову як машинний код на диску Зовсім не зберігається машинний код.
Тривалість роботи Скомпільований код працює швидше Інтерпретований код працює повільніше
Модель Він базується на моделі перекладу посилань-завантаження. Він базується на методі інтерпретації.
Генерація програми Генерує вихідну програму (у формі exe), яку можна запустити незалежно від початкової програми. Не генерувати вихідну програму. Тому вони оцінюють вихідну програму щоразу під час виконання.
Виконання Виконання програми окремо від компіляції. Він виконується лише після того, як складена вся програма виводу. Виконання програми є частиною процесу інтерпретації, тому воно виконується по черзі.
Вимога пам’яті Цільова програма виконуєтьсязалежно і не вимагає компілятора в пам'яті. Інтерпретатор існує в пам'яті під час інтерпретації.
Найкраще підходить для Обмежений до конкретної цільової машини і не може бути перенесений. C і C ++ - найпопулярніша мова програмування, яка використовує модель компіляції. Для веб-середовищ, де час завантаження важливий. Завдяки усьому вичерпному аналізу, компіляція займає порівняно більше часу, щоб скомпілювати навіть невеликий код, який може не запускатися кілька разів. У таких випадках перекладачі краще.
Оптимізація коду Компілятор бачить весь код заздалегідь. Отже, вони виконують безліч оптимізацій, які змушують код працювати швидше Інтерпретатори бачать код рядок за рядком, і, отже, оптимізація не така надійна, як компілятори
Динамічне введення тексту Важко реалізувати, оскільки компілятори не можуть передбачити, що відбувається в момент повороту. Інтерпретовані мови підтримують динамічне введення тексту
Використання Він найкраще підходить для виробничого середовища Він найкраще підходить для програми та розвитку середовища.
Виконання помилки Компілятор відображає всі помилки та попередження під час компіляції. Тому ви не можете запустити програму без виправлення помилок Інтерпретатор читає одне твердження і показує помилку, якщо така є. Потрібно виправити помилку, щоб інтерпретувати наступний рядок.
Вхідні дані Це займає цілу програму Це займає один рядок коду.
Вихідні дані Compliers генерує проміжний код Machnie. Перекладач ніколи не генерує жодного проміжного коду машини.
Помилки Відобразити всі помилки після компіляції, все одночасно. Відображає всі помилки кожного рядка по черзі.
Відповідні мови програмування C, C ++, C #, Scala, Java використовують компілятор. PHP, Perl, Ruby використовує інтерпретатор.

Роль упорядника

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

Роль перекладача

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

МОВИ ВИСОКОГО РІВНЯ

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

МАШИННИЙ КОД

Машинні мови дуже близькі до апаратних. Кожен комп’ютер має свою машинну мову. Програми машинної мови складаються з ряду двійкових зразків. (Напр. 110110) Він представляє прості операції, які повинен виконувати комп'ютер. Програми машинної мови є виконуваними, щоб їх можна було запускати безпосередньо.

КОД ПРЕДМЕТА

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

Java одночасно компілюється та інтерпретується.

Для використання відносних переваг компіляторів є інтерпретатори, деякі мови програмування, такі як Java, одночасно компілюються та інтерпретуються. Сам код Java компілюється в Object Code. Під час виконання JVM інтерпретує код об'єкта в машинний код цільового комп'ютера.