Re[29]: на каком языке вам приятнее всего программировать ?
От: Pavel Dvorkin Россия  
Дата: 27.01.13 09:36
Оценка: +1
Здравствуйте, hattab, Вы писали:

H>По твоему получается, что исполняемым считается только тот код, который соответствует целевому CPU.


Ну да. Бинарный код, состоящий из машинных команд целевого CPU. Я даю такое определение ему. Если у тебя другое — примем как факт и закончим дискуссию.

>То есть, в приложении работающем под JVM код исполняемым не считается, а при запуске того же приложения на java-процессоре уже считается? Это же абсурд


Этот код является исполняемым только на аппаратном java процессоре, то есть процессоре, который непосредственно исполняет байт-код. Если же этот байт-код преобразуется в код таргет-платформы кем-то, то это лишь данные для этого преобразователя. В этом, кстати, ничего удивительного нет. Машинный x86 код является исполняемым для процессора x86, но если его запускать на машинах с иным процессором, то нужен эмулятор x86 и этот код будет уже не исполняемым кодом, а данными для эмулятора.

H>VM это и есть специализированный процессор (wiki):

H>

A virtual machine (VM) is a simulation of a machine (abstract or real) that is usually different from the target machine (where it is being simulated on). Virtual machines may be based on specifications of a hypothetical computer or emulate the computer architecture and functions of a real world computer.


Еще раз попробуй понять меня. Я не против того, что VM есть специализированный процессор для обработки и исполнения байт-кода. Я также не против того, что Бейсик-интерпретатор есть специализированный процессор для обработки и исполнения програмы на бейсике (кстати, на Ямахе был встроенный бейсик, работавший без ОС). Я также не против того, что cmd.exe есть специализированный процессор для обработки bat-файлов. И т.д. и т.п.

Я не вижу для этих трех случаев никакой принципиальной разницы, и могу назвать еще много таких процессоров.
По-твоему, между этим тремя случаями есть разница ? В чем ?

А вот аппаратный процессор — он один-единственный на этой машине. И только нативный код исполняется аппаратным процессором. В остальных трех случаях код (байт-код, текст на бейсике, текст bat-файла) есть в действительности данные, которые обрабатывает этот процессор, строит аппаратно-исполняемый код и вызывает его.

Впрочем, твоя цитата именно об этом и говорит. См. выделенное. Либо на гипотетическом компьютере, либо под эмулятором (== нативная программа, VM/basic/cmd)
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.