Сообщение Re[37]: 32/64/AnyCPU - что за @$^%$? от 02.11.2016 14:14
Изменено 02.11.2016 14:17 Serginio1
Что CLR эмулирует? Он просто компилирует код. Там никакого понятия эмуляции не существут.
Прочитал. Где в CLR какая либо замена? CIL это язык, аналог ассемблера.
Опять же байт код выполняет не только Java, но и на питон и 1С и еще куча интерпритаторов. Если убрать JIT,
то по сути они тоже VM? Отличие от Java только в статической типизации и сборщике мусора.
трехадресный код это тоже VM
Так объясни мне где в .Net эмуляция, Весь код перед выполнением компилируется.
Ты так и не ответил про NGEN, Net Native.
Вот это и есть виртуальные машины, который выполняет код предназначенный для других Осей,процессоров.
В VS полно таких эмуляторо и бот они как раз и являются VM.
При этом код компилируется под определенную ось и процессор.
T>к ТЕРМИНАМ язык программирования, интерпретатор, компилятор, среда исполнения, байт код, виртуальная машина
T>надо добавить
T>трансляцию, песочницу, дебагеры, КОНТЕЙНЕРЫ.
Вот CLR это как раз среда выполнения, но в ней никакой эмуляции не происходит. Все компилируется в машинный код.
Эмуляция происходит только в Hyper-V
T>Текст длинный получился.
T>Попробую чуть позже написать про все эти термины и где лежит граница между терминами
T>Замечу что в браузере для javascript работает не виртуальная машина а контейнер.
А в чем различие? Уже есть WebAssembly по твоей териналогии тот же байт код.
WebAssembly определяет абстрактное синтаксическое дерево(AST), которое хранится в бинарном формате. Бинарность это здорово, так как позволяет создавать меньшие приложения. Наверняка вы задаетесь вопросом, как можно отлаживать бинарный код.
Что CLR эмулирует? Он просто компилирует код. Там никакого понятия эмуляции не существут.
Прочитал. Где в CLR какая либо замена? CIL это язык, аналог ассемблера.
Опять же байт код выполняет не только Java, но и на питон и 1С и еще куча интерпритаторов. Если убрать JIT,
то по сути они тоже VM? Отличие от Java только в статической типизации и сборщике мусора.
трехадресный код это тоже VM
Так объясни мне где в .Net эмуляция, Весь код перед выполнением компилируется.
Ты так и не ответил про NGEN, Net Native.
Вот это и есть виртуальные машины, который выполняет код предназначенный для других Осей,процессоров.
В VS полно таких эмуляторо и бот они как раз и являются VM.
При этом код компилируется под определенную ось и процессор.
T>к ТЕРМИНАМ язык программирования, интерпретатор, компилятор, среда исполнения, байт код, виртуальная машина
T>надо добавить
T>трансляцию, песочницу, дебагеры, КОНТЕЙНЕРЫ.
Вот CLR это как раз среда выполнения, но в ней никакой эмуляции не происходит. Все компилируется в машинный код.
Эмуляция происходит только в Hyper-V
T>Текст длинный получился.
T>Попробую чуть позже написать про все эти термины и где лежит граница между терминами
T>Замечу что в браузере для javascript работает не виртуальная машина а контейнер.
А в чем различие? Уже есть WebAssembly по твоей териналогии тот же байт код.
WebAssembly определяет абстрактное синтаксическое дерево(AST), которое хранится в бинарном формате. Бинарность это здорово, так как позволяет создавать меньшие приложения. Наверняка вы задаетесь вопросом, как можно отлаживать бинарный код.
Опять же https://habrahabr.ru/post/261205/
В: Почему бы не использовать JVM?
О: Попытки добавить JVM в браузеры с помощью плагинов были и не раз. К сожалению, ничего хорошего из этого не вышло. В JavaScript есть встроенная виртуальная машина, поэтому добавление еще одной приводит к появлению второго набора API подключений, чтобы дать виртуальной машине доступ к DOM, сетям, сенсорам, устройствам ввода и т.п. За это придется кое чем пожертвовать. Например, как будут процессы в виртуальной машине распределять между собой имеющиеся ресурсы? Ответить на этот вопрос сложнее, чем кажется.