Здравствуйте, Serginio1, Вы писали:
S>>> Ну в википедии много чего есть, что не соответствует истины.
ARK>>А где же взять истину, о гуру?
S> На заборе вестимо.
Смешно, смешно.
S> Ну как же ты сам признал, что VM это не компилятор.
VM — это не компилятор, но вполне может включать в себя компилятор. А может и не включать.
S> На самом деле для выполнения MSIL его нужно скомпилировать
S>1. Динамически с помощью JIT компилятора их CLR
S>2. Статически .Net Native. При этом есть ограничение на рефлексию в MSIL коде.
И что дальше?
Джаву можно интерпретировать, можно JIT-ить, а можно компилировать (см. Excelsior).
JavaScript/LUA можно интерпретировать, можно JIT-ить.
C/C++/Pascal можно интерпретировать, можно компилировать.
Какое это все имеет отношение к виртуальной машине .NET?
ARK>>Набор сервисов, предназначенных для выполнения кода в специальном формате. Выполнение кода, сборка мусора, работа с памятью, исключения и прочее и прочее.
S> То есть это определение подходит и .Net Native.
К .Net Native может и подходит. Но .Net Native — это не .NET, а подмножество.
S>Значит компилятор это VM?
Нет, не значит.
У вас с логикой что-то не то. Есть некий код, который может быть либо а) выполнен с помощью виртуальной машины; либо б) скомпилирован в единый экзешник (есть еще вариант — сунуть в экзешник всю виртуальную машину, как это частично делает Excelsior). Вывод Serginio1: раз код можно выполнять на VM и компилировать, значит VM это компилятор.
Типа если человек может жрать траву, и корова может жрать траву, значит человек это корова.