Мови програмування, як правило, належать до одного з двох типів мов - компільованих мов або інтерпретованих мов. Однак різниця не в мові; це в реалізації. Неправильно сказати, що обидва є властивостями реалізації мови, але не властивостями самої мови. Реалізація мови програмування означає усунення розриву від мислення програміста на високому рівні до нулів і рівнів машини. Якщо зробити це ефективно, програмісти можуть зосередитись на актуальних проблемах, а не на деталях машин. Отже, мова програмування може бути складена або інтерпретована на основі реалізації.
Ну, обидва типи мов програмування мають свої сильні сторони. Деякі мови вимагають, щоб весь ваш код був скомпільований, перш ніж будь-який з кодів може бути виконаний. Інші мови інтерпретують кожну інструкцію під час виконання коду. Насправді, компільовані мови зазвичай складаються програмістом на комп'ютері програміста; коли програміст ділиться програмним забезпеченням, він / вона ділиться складеними 0 та 1, але не вихідним кодом. Однак з інтерпретованою мовою код зберігається у тому ж форматі, який ви ввели, і повинен бути перекладений під час виконання. Давайте розглянемо детальне порівняння між складеними та інтерпретованими мовами.
Комп'ютери здатні виконувати лише машинну мову, яка є мовою центрального процесорного блоку (CPU) і дуже проста. Мета будь-якої реалізації мови програмування - перевести вихідну програму на машинну мову, щоб вона могла бути виконана ЦП. Усі мовні реалізації переводять вихідну програму в деяке проміжне подання перед тим, як перевести проміжне представлення на машинну мову. Найбільш прямий метод перекладу програми на машинну мову називається компіляцією. Програма, написана на компільованій мові, повинна бути перетворена в інший формат до її запуску. Перед початком виконання вихідний код повинен бути перетворений в машиночитані інструкції. Коротше кажучи, мови, реалізація яких зазвичай є компіляторами, а не інтерпретаторами, називаються компільованими мовами.
Інтерпретатор - це програма, яка написана якоюсь іншою мовою і складена на машиночитану мову. Сам інтерпретатор є машинною мовною програмою і пишеться для читання вихідних програм з інтерпретованої мови та їх інтерпретації. Інтерпретована мова, навпаки, не збирає вихідний код у машинну мову до запуску програми. Він просто інтерпретує код на льоту. Таким чином, ви не отримаєте переваг або недоліків помилок компіляції. Інтерпретовані мови вимагають програмного забезпечення під назвою інтерпретатор, який бере вихідний код і виконує одну інструкцію за раз. Запускаючи програму з інтерпретованим джерелом, ви фактично запускаєте інтерпретатор. Інтерпретатор - це програма машинної мови, яка виконує всі програми, які ви пишете на інтерпретованій мові.
- Програма, написана на компільованій мові, повинна бути перетворена в інший формат до її запуску. Перед початком виконання вихідний код повинен бути перетворений в машиночитані інструкції. Інтерпретована мова, навпаки, не збирає вихідний код у машинну мову до запуску програми. Він просто інтерпретує код на льоту. Інтерпретовані мови вимагають програмного забезпечення під назвою інтерпретатор, який бере вихідний код і виконує одну інструкцію за раз.
- Для компільованих мов є щонайменше два кроки для переходу від вихідного коду до виконання, тоді як для інтерпретованих мов існує лише один - виконання. Програма, написана на інтерпретованій мові, не компілюється - вона інтерпретується іншою програмою, поки вона працює. Програма, написана на компільованій мові, проходить процес зміни її з тексту, читаного людиною, у машиночитаний формат. Програма, що називається компілятором, робить цей перехід.
- Скомпільовані програми працюють швидше, ніж інтерпретовані програми, але інтерпретовані програми можна змінювати під час роботи програми. Це робить інтерпретовані програми ідеальними для написання програмного забезпечення для виконання програм. Робота зі скомпільованими мовами може бути приємною, тому що при компіляції вихідного коду виявляється багато помилок. Ці помилки, звані помилками компіляції, запобігають компіляції коду. Навпаки, інтерпретовані мови не компілюються, тому ви не отримуєте переваг чи недоліків помилок компіляції.
- З інтерпретованими мовами вся налагодження відбувається під час виконання. Немає кроку компіляції, під час якого можна викидати всі синтаксичні помилки у вашому коді; замість цього вам доведеться запустити програму, щоб знайти в ній будь-які помилки. Це стає проблемою, коли інтерпретована програма змінює файли або вносить будь-які зміни в постійні ресурси. Це робить деякі помилки важче зловити, оскільки код не потрібно компілювати. Інтерпретовані мови також представляють деякі проблеми безпеки в онлайн-середовищі, оскільки зловмисний код може бути введений в середині виконання.
У двох словах, як складені, так і інтерпретовані мови мають свої сильні сторони. Деякі мови вимагають, щоб весь ваш код був скомпільований, перш ніж будь-який з кодів може бути виконаний. Інші мови інтерпретують кожну інструкцію під час виконання коду. Основна відмінність між ними полягає в тому, що є щонайменше два кроки, щоб дістатися від вихідного коду до виконання зі скомпільованими мовами. Однак для інтерпретованих мов існує лише один крок - виконання. Скомпільовані програми працюють швидше, ніж інтерпретовані програми, але інтерпретовані програми можна змінювати під час роботи програми.