Различие глубоко осмысленное, потому что скомпилированные языки ограничивают семантику способами, которые необязательно интерпретируются языками. Некоторые методы интерпретации очень трудно (практически невозможно) компилировать.
Интерпретированный код может выполнять такие вещи, как генерация кода во время выполнения и придание этому коду видимости в лексических привязках существующей области. Это один пример. Другое заключается в том, что интерпретаторы могут быть расширены интерпретируемым кодом, который может контролировать способ его оценки. Это основа для древних Lisp "fexprs": функций, которые вызываются с неоцененными аргументами и решают, что с ними делать (имея полный доступ к необходимой среде для обхода кода и оценки переменных и т. Д.). В скомпилированных языках вы не можете использовать эту технику; вместо этого вы используете макросы: функции, которые вызываются во время компиляции с неоцененными аргументами и переводят код, а не интерпретируют.
Некоторые языковые реализации построены вокруг этих методов; их авторы отвергают компиляцию как важную цель и предпочитают такую гибкость.
Интерпретация всегда будет полезна в качестве метода начальной загрузки компилятора. Для конкретного примера посмотрите на CLISP (популярная реализация Common Lisp). CLISP имеет компилятор, который написан сам по себе. Когда вы собираете CLISP, этот компилятор интерпретируется на ранних этапах сборки. Он используется для компиляции, а затем после компиляции выполняется компиляция.
Без ядра интерпретатора вам нужно было бы загрузиться с некоторым существующим Lisp, как это делает SBCL.
С устным переводом вы можете разработать язык с нуля, начиная с ассемблера. Разработайте базовые процедуры ввода-вывода и ядра, а затем напишите eval, все еще машинный язык. Как только вы получите eval, напишите на языке высокого уровня; ядро машинного кода выполняет оценку. Используйте эту возможность, чтобы расширить библиотеку многими другими подпрограммами и написать также компилятор. Используйте компилятор для компиляции этих подпрограмм и сам компилятор.
Интерпретация: важная ступенька на пути, ведущем к компиляции!