Нет никакой разницы, потому что «скомпилированный язык программирования» и
«Интерпретированный язык программирования» не является осмысленным понятием. любой
язык программирования, и я действительно имею в виду любой, может быть интерпретирован или
скомпилирован. Таким образом, интерпретация и компиляция являются реализацией
техники, а не атрибуты языков.
Интерпретация - это метод, при котором другая программа,
переводчик, выполняет операции от имени программы
интерпретировать, чтобы запустить его. Если вы можете себе представить, читая программу
и делать то, что он говорит, чтобы сделать шаг за шагом, скажем, на кусок нуля
бумага, это именно то, что делает переводчик. Общая причина
интерпретировать программу, что переводчики относительно легко
написать. Другая причина в том, что переводчик может контролировать
Программа пытается сделать, как она работает, для обеспечения политики, скажем, для
безопасность.
Компиляция - это метод, при котором программа написана на одном языке
(«исходный язык») переводится в программу на другом
язык («объектный язык»), который, как мы надеемся, означает то же самое
как оригинальная программа. Делая перевод, это обычно для
компилятор также попытаться преобразовать программу таким образом, чтобы
сделать программу объекта быстрее (без изменения ее значения!).
общая причина для компиляции программы - это хороший способ
запускать программы на объектном языке быстро и без лишних затрат
интерпретации исходного языка по пути.
Вы, возможно, догадались, основываясь на приведенных выше определениях, что эти два
методы реализации не являются взаимоисключающими и могут даже
дополняют друг друга. Традиционно объектный язык компилятора был
машинный код или что-то подобное, что относится к любому числу
языки программирования, понятные конкретным процессорам компьютера.
машинный код будет работать «на металле» (хотя можно увидеть, если
достаточно внимательно посмотреть, что «металл» работает очень похоже на
переводчик). Сегодня, однако, очень распространено использование компилятора для
генерировать объектный код, который предназначен для интерпретации - например, это
это то, как Java раньше (а иногда и до сих пор) работает. Есть
компиляторы, которые переводят другие языки в JavaScript, который затем
часто запускается в веб-браузере, который может интерпретировать JavaScript, или
скомпилируйте виртуальную машину или собственный код. У нас также есть переводчики
для машинного кода, который может использоваться для эмуляции одного типа оборудования на
другой. Или можно использовать компилятор для генерации объектного кода, который
затем исходный код для другого компилятора, который может даже скомпилировать
код в памяти как раз вовремя для его запуска, что в свою очередь. , , ты получаешь
идея. Есть много способов объединить эти понятия.