Немає різниці, оскільки "складена мова програмування" та "інтерпретована мова програмування" не є змістовними поняттями. Будь-яка мова програмування, і я справді маю на увазі будь-яку, може бути інтерпретована або складена. Таким чином, інтерпретація та компіляція - це методи реалізації, а не атрибути мов.
Інтерпретація - це техніка, згідно з якою інша програма, перекладач, виконує операції від імені програми, що інтерпретується, з метою її запуску. Якщо ви можете уявити собі, як читати програму і робити те, що їй сказано, робити покроково, скажіть на папері з нуля, це саме те, що робить і перекладач. Поширеною причиною інтерпретації програми є те, що інтерпретатори писати відносно легко. Інша причина полягає в тому, що перекладач може контролювати, що програма намагається робити під час її роботи, виконувати політику, скажімо, задля безпеки.
Компіляція - це техніка, згідно з якою програма, написана однією мовою ("мова джерела"), переводиться в програму іншою мовою ("мова об'єкта"), що, сподіваємось, означає те саме, що і оригінальна програма. Виконуючи переклад, компілятор звичайно намагається також перетворити програму способами, які дозволять зробити об'єктну програму швидшою (не змінюючи її значення!). Поширеною причиною складання програми є те, що існує якийсь хороший спосіб запустити програми на мові об'єкта швидко та без накладних витрат на інтерпретацію вихідної мови.
Ви, мабуть, здогадалися, виходячи з вищенаведених визначень, що ці дві методи реалізації не є взаємовиключними та можуть навіть доповнювати один одного. Традиційно мовою об'єкта компілятора був машинний код або щось подібне, що стосується будь-якої кількості мов програмування, зрозумілих для конкретних комп'ютерних процесорів. Потім машинний код запускається «на металі» (хоча, якщо достатньо придивитись, можна побачити, що «метал» працює як перекладач). Однак сьогодні дуже часто використовувати компілятор для генерування об'єктного коду, який призначений для інтерпретації - наприклад, так працює (а іноді й досі) працює Java. Існують компілятори, які перекладають інші мови на JavaScript, який часто запускається у веб-браузері, який може інтерпретувати JavaScript, або скласти на ньому віртуальну машину або власний код. У нас також є інтерпретатори машинного коду, які можна використовувати для емуляції одного виду обладнання на інший. Або можна використовувати компілятор для створення об'єктного коду, який є вихідним кодом іншого компілятора, який може навіть компілювати код в пам'яті саме вчасно, щоб він запустився, що в свою чергу. . . ви отримуєте ідею. Існує багато способів поєднання цих понять.