Інтерпретовані та компільовані мови програмування: в чому різниця?

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

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

Гаразд ... але що це насправді означає?

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

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

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

Складені мови

Складені мови перетворюються безпосередньо в машинний код, який може виконувати процесор. Як результат, вони, як правило, виконуються швидше та ефективніше, ніж інтерпретовані мови. Вони також надають розробнику більше контролю над апаратними аспектами, такими як управління пам'яттю та використання центрального процесора.

Компільовані мови потребують кроку "побудови" - спочатку їх потрібно скомпілювати. Вам потрібно «перебудовувати» програму кожного разу, коли вам потрібно внести зміни. У нашому прикладі хумусу весь переклад написаний до того, як він дійде до вас. Якщо оригінальний автор вирішить, що хоче використовувати інший вид оливкової олії, весь рецепт потрібно буде перекласти ще раз і образити вам.

Прикладами чистих компільованих мов є C, C ++, Erlang, Haskell, Rust та Go.

Інтерпретовані мови

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

Інтерпретовані мови колись були значно повільнішими за компільовані мови. Але з розвитком своєчасної компіляції цей розрив зменшується.

Прикладами поширених інтерпретованих мов є PHP, Ruby, Python та JavaScript.

Невелика застереження

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

Наприклад, Python може бути виконаний як компільована програма або як інтерпретована мова в інтерактивному режимі. З іншого боку, більшість інструментів командного рядка, CLI і оболонки теоретично можна класифікувати як інтерпретовані мови.

Переваги та недоліки

Переваги компільованих мов

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

Недоліки компільованих мов

Найбільш помітними недоліками є:

  • Додатковий час, необхідний для завершення всього етапу компіляції перед тестуванням
  • Залежність платформи згенерованого двійкового коду

Переваги мов, що перекладаються

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

Недоліки інтерпретованих мов

Найбільш помітним недоліком є ​​типова швидкість виконання порівняно зі скомпільованими мовами.