Re[8]: Быстро превратить интерпретатор в компилятор
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.01.10 21:00
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Там внутри довольно четкое разделение на компиляцию в байткод и исполнение его ВМ. Есть даже разделение — байткод можно сохранить в файл, а потом многократно исполнять.


Это не имеет ровным счетом никакого значения. Это детали реализации интерпретатора. В наше время интерпретировать текст скриптов отваживаются редко.

VD>>На будущее. Интерпретация — это исполнение программы другой программой, а не процессором (железякой).


DM>Тогда Java — интерпретатор.


Ява имеет разные реализации. Есть чисто интерпретирующие VM, а есть VM поддерживающие JIT-компиляцию (т.е. компиляцию кода перед первом его исполнением). Более того JIT-ер от Sun-а может какие-то куски кода интерпретировать (если он посчитает, что они не критичны для производительности или они не выполняются более одного раза), а какие-то компилирует.
Дотнет, как не странно, тоже обладает разными VM. Основная, используемая на ПК, обладает JIT-компилятором который прекомпилирует весь код. Более того большая часть системных сборок прекомпилируется еще при инсталляции дотнета.

VD>>Вот компиляцией можно назвать и преобразование текста в байткод.


DM>Питон, Руби и Луа это делают.


Это делают 90% интерпретаторов.

VD>>Но если говорят о интерпретирующих и компилирующих ЯП или средах, то под компилятором обычно понимают нечто транслирующее код в нэйти-код процессора.


DM>Тогда Nemerle — не компилятор.


Правильно, так как Nemerle — это язык. Но вот его компилятор генерирует байткод, которые перед исполнением компилируется в машинный код с помощью JIT-компилятора дотнета (или прекомпилятора — ngen.exe). Так что в итоге Nemerle — это компилируемый язык. Именно по этому код написанный на нем по скорости мало отличается от кода написанного на С.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.