Как отмечают другие, языки не компилируются и не интерпретируются.Это просто правила, которые требуют перевода, и большинство из них интерпретируют и компилируют реализации.Даже тогда трудно говорить о интерпретации по сравнению с компиляцией, когда многие «интерпретаторы» повсеместно jitting , а некоторые «компиляторы» с удовольствием компилируют по требованию, если изменяется исходный файл.
Может быть, лучше классифицировать реализации как полностью предварительно скомпилированные или скомпилированные по требованию .Если мы используем эти категории, единственной вещью, которая нарушает полную прекомпиляцию, является eval-функция .Это, вероятно, больше влияет на реализацию, чем на динамические типы.Если у вас есть функция eval, вам необходимо поддерживать компиляцию по требованию.