Информация об изменениях

Сообщение Re[23]: 32/64/AnyCPU - что за @$^%$? от 10.10.2016 9:09

Изменено 10.10.2016 9:19 Serginio1

Здравствуйте, AlexRK, Вы писали:

ARK>Здравствуйте, Sinix, Вы писали:


S>>По ссылкам всё написано: термин "VM" тут не совсем подходит, т.к. стоит сделать шаг в сторону ngen-ом или .net native и внезапно VM в традиционном понимании куда-то пропадает и получается натягивание совы в стиле "браузеры — это VM!!!".


ARK>В общем, это пляски вокруг терминологии. Четкого формального определения, что такое VM, я не видел. Если предоставите — буду раз прочесть.


ARK>Согласно моему пониманию и определению в википедии, CLR вполне является VM. Как я понял, весь спор начался вокруг того, что в .NET входит как CLR, так и появившийся совсем недавно .NET Native, и, дескать, топикстартер выразился некорректно. Но что, разве непонятно, о чем говорил топикстартер, употребив выражение ".NET VM"? Непонятно, что он говорит о CLR, а .NET Native тут вообще ни при чем? Стоило разводить эту бодягу о терминологии?


Так самый смех заключается в том, что с NGEN и CLR не подходит пот терминалогию VM так как выполняется код под конкретную платформу.


Виртуальная машина (ВМ, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница); также спецификация некоторой вычислительной среды (например: «виртуальная машина языка программирования Си»).


Ну под это описание даже CLR с JIT компиляцией не подходит.

Хорошо есть описание

Виртуальная машина исполняет некоторый машинно-независимый код (например, байт-код, шитый код, p-код) или машинный код реального процессора.


Так при NGEN выполняется код под существующий процессор. Да CLR может загружать сборки и компилировать их. Но если приложение не использует рефлексиюс неизвестными типами, то и дополнительной JIT компиляции не происходит.
Так, что выражение .Net это VM ложно.

А ноги растут из JVM https://ru.wikipedia.org/wiki/Java_Virtual_Machine

Виртуальные машины Java обычно содержат Интерпретатор байт-кода, однако, для повышения производительности во многих машинах также применяется JIT-компиляция часто исполняемых фрагментов байт-кода в машинный код.


В CLR весь код компилируется при первом обращении к классу.
Re[23]: 32/64/AnyCPU - что за @$^%$?
Здравствуйте, AlexRK, Вы писали:

ARK>Здравствуйте, Sinix, Вы писали:


S>>По ссылкам всё написано: термин "VM" тут не совсем подходит, т.к. стоит сделать шаг в сторону ngen-ом или .net native и внезапно VM в традиционном понимании куда-то пропадает и получается натягивание совы в стиле "браузеры — это VM!!!".


ARK>В общем, это пляски вокруг терминологии. Четкого формального определения, что такое VM, я не видел. Если предоставите — буду раз прочесть.


ARK>Согласно моему пониманию и определению в википедии, CLR вполне является VM. Как я понял, весь спор начался вокруг того, что в .NET входит как CLR, так и появившийся совсем недавно .NET Native, и, дескать, топикстартер выразился некорректно. Но что, разве непонятно, о чем говорил топикстартер, употребив выражение ".NET VM"? Непонятно, что он говорит о CLR, а .NET Native тут вообще ни при чем? Стоило разводить эту бодягу о терминологии?


Так самый смех заключается в том, что с NGEN и CLR не подходит пот терминалогию VM так как выполняется код под конкретную платформу.


Виртуальная машина (ВМ, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы (target — целевая, или гостевая платформа) и исполняющая программы для target-платформы на host-платформе (host — хост-платформа, платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы (см.: песочница); также спецификация некоторой вычислительной среды (например: «виртуальная машина языка программирования Си»).


Ну под это описание даже CLR с JIT компиляцией не подходит.

Хорошо есть описание

Виртуальная машина исполняет некоторый машинно-независимый код (например, байт-код, шитый код, p-код) или машинный код реального процессора.


Так при NGEN выполняется код под существующий процессор. Да CLR может загружать сборки и компилировать их. Но если приложение не использует рефлексиюс неизвестными типами, то и дополнительной JIT компиляции не происходит.
Так, что выражение .Net это VM ложно.

А ноги растут из JVM https://ru.wikipedia.org/wiki/Java_Virtual_Machine

Виртуальные машины Java обычно содержат Интерпретатор байт-кода, однако, для повышения производительности во многих машинах также применяется JIT-компиляция часто исполняемых фрагментов байт-кода в машинный код.


В CLR весь код компилируется при первом обращении к классу.

А что касается зачем нужны разные платформы то ответ дан здесь

http://rsdn.org/forum/flame.comp/6576282.1
Автор: Sinix
Дата: 09.10.16