Re[26]: 32/64/AnyCPU - что за @$^%$?
От: tranzit  
Дата: 01.11.16 21:55
Оценка: 2 (1) +1
Здравствуйте, Serginio1, Вы писали:

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


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


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


ARK>>Это ничего не значит. "Виртуализировать некоторую платформу" можно любым способом, главное, что эта платформа (IL) в принципе есть. Остальное неважно — интерпретируется IL, компилируется или вычисляется вручную кучей китайцев в подвале.

S> Ну дык под это определение подходит и C++. Он тоже кросс-платформенный и компилируется. Ничем IL от C++ не отличается. Просто он более низкоуровневый.

У вас все перемешалось, надо вам прочитать какю-нить литературу.
Вы путаете языки программирования, интерпретатор, компилятор, среду исполнения, байт код, виртуальную машину и мне кажется даже OS.
1 язык программирования надеюсь нет смысла объяснять

2 Интерпретатор — читает текст программы как есть и выполняет инструкцию (для c, c++, perl, ... есть интерпретатор)
например bash тоже интерпретатор не переводит даже в машинный код, или tcsh — этот shel тоже является
интерпретатором но "C" языка. Первые движки javascrip тоже являлись только интерпретатором. Конечно теперь у javascrip есть виртуальная машина и компилятор.
У Perl есть и интерпретатор и виртуальная машина и даже может компилить в нативные инструкции процессора (машинный код). Хотя когда запускаете perl script то идет компиляция на лету в байт код и потом виртуальная машина PERL исполняет этот код.

3 компилятор преобразует исходный текст программы в машинный код или в код виртуальный
машины (по другому абстрактной как раз этот код потом исполняется виртуальной машиной например Java, perl, Lua, .Net, ...)
как понимаешь виртуальная машина не абстрактное понятие а конкретное приложение и исполняет конкретный байт код
который сформировал соответствующий конкретный компилятор из конкретного языка программирования

4а среда исполнения может быть как непосредственно процессор (частенько в микроконтроллерах программа работает напрямцю с процессором без каких либо OS), но может средой исполнения быть и процессор в связке OS который может предложить дополнительные удобства. Например загрузку или выгрузку программы и дополнительно предложить готовые
функции по вводу и выводу и также функции по доступу к оборудованию.

4б Но средой исполнения, например для байт кода, может выступать и виртуальная машина, которая кроме исполнения
байт кода может предложить и дополнительные услуги,компиляция в нативный код, сборщик мусора, доступ к
оборудованию (например звуковой карте и т.д.)

5 байт код (абстрактный код или виртуальный код т.к. нет такой машины с электрической схемой которая могла бы выполнить этот код) как мы уже сказали может быть получен путем компиляции в байт код (прошу заметить в независимый код от процессора системы на котором будет запускаться данное приложение).
Но то что сегодня этот байт код является виртуальной сегодня то завтра может быть сделан специальный
процессор для этого кода. Так случилось с Java-ой т.к. для байт кода Java создали процессор.

6 Виртуальная машина это программа которая является прослойкой между байт кодом и процессором.
виртуальная машина берет байт код и выполняет на целевой системе "интерпретируя" этот код, но заметьте виртуальная машина при этом не становится интерпретатором. Ранее мы уже сказали что интерпретатор анализирует текст программы а не байт код, само слово "код" — и есть ключевое понятие машины и в данном случае виртуальной.


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


ARK>>После этого CLR можно отключать?

ARK>>Правда после отключения мы захотели обратиться еще к одному классу и...
S>Ну скомпилировали через NGEN и JIT компиляцию можно отключать (если конечно нет рефлексии к неподгруженным сборкам)
S> CLR это не только JIT но и менеджер памяти и сборка мусора. Аналог CLR только оптимизированный есть и в .Net Native.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.