запутыватель> Хороший закон, ага. И как мы Яву, к примеру, классифицируем? Ну почему я знал заранее? ;) Тут придется углубится дальше. В прошлом письме я представил очень простую бинарную модель, но в реальности между случаем, когда у нас родной код процессора, полученный из C, и случаем псевдокомпилятора, когда мы имеем исходник+интерпретытор в каждом "откомпилированном" .exe, есть масса промежуточных состояний, зависящих от того, сколько внесено в язык вещей, не поддающихся компиляции. В яве не так уж много того, что не поддается компиляции, так что если закрыть глаза на необходимость RTTI и еще некоторых вещей, а также запретить некоторые фичи, типа java.lang.Compiler, можно будет считать это комиплируемым языком. Но практически можно считать, что язык это интерпретируемый. О чем также говорит наличие декомпиляторов с Явы. Не делайте ошибку, кивая в данном случае на JIT и прочие подобные технологии. Перевод языка в последовательность родных машинных команд производится в любом случае, и компилируемый вариант отличается от интерпретируемого только тем, КОГДА. В случае компилируемого языка _вся_ компиляция производится _до_ того момента, как мы получили готовый модуль. |