Я знаю, что этот вопрос старый, но он связан повсюду, и я думаю, что все ответы здесь неправильные (возможно, потому что они старые).
Существует НЕТ такая вещь, как интерпретируемый язык или скомпилированный язык. Любой язык программирования может быть интерпретирован и / или скомпилирован.
Прежде всего, язык - это просто набор правил, поэтому, когда мы говорим о компиляции, мы ссылаемся на конкретные реализации этого языка.
ЧЧВМ , например, является реализацией PHP. Он использует JIT-компиляцию для преобразования кода в промежуточный байт-код HipHop, а затем преобразуется в машинный код. Достаточно ли сказать, что оно составлено? Некоторые реализации Java (не все) также используют JIT. Google V8 также использует JIT.
Использование старых определений скомпилированных и интерпретированных в настоящее время не имеет смысла.
"Скомпилирован ли PHP?" это бессмысленный вопрос, учитывая, что нет
больше ясных и согласованных разделителей между тем, что является скомпилированным языком против
истолковал один.
Один из возможных способов их разграничения (в этой дихотомии я не вижу смысла):
скомпилированные языки использовать компиляцию Ahead of Time (C, C ++);
интерпретируемые языки использовать компиляцию Just in Time или вообще не использовать компиляцию (Python, Ruby, PHP, Java).