Une machine virtuelle est, comme le signale le monsieur du dessus, un programme qui simule une machine (existante ou non). Donc qui simule une architecture à base - généralement - de processeur, mémoire, registres, interruptions, etc. Les machines virtuelles Java en sont l'exemple le plus évident, mais on peut aussi citer les émulateurs de consoles/sasfépus ou certains débuggers.
Un interpréteur, strictement, est un automate qui évalue "à la chaîne" des expressions (les "instructions" du langage).
L'ambiguïté vient du fait qu'un processeur (et donc, par extension, une machine virtuelle, puisqu'elle en simule un) peut être assimilé à un interpréteur: il "éxecute" en effet des instructions à la chaîne. La différence majeure tenant, à mon sens, dans le niveau d'abstraction pratiqué. Un interpréteur travaille généralement avec des données de haut niveau (idéalement: des maths) qu'il _évalue_. Une machine virtuelle travaille généralement sur des données plus proches de celles que manipulerait une vraie machine (notamment dans le cas des émulateurs, mais la VM Java n'est pas si éloignée que cela d'une machine réelle, si on excepte sa quantité "faramineuse" (potentiellement infinie, en fait) de registres).
Bref, j'espère que j'ai pas trop dit de conneries.
[^] # Re: Félicitations !
Posté par Larry Cow . En réponse à la dépêche Balazar 0.1. Évalué à 7.
Une machine virtuelle est, comme le signale le monsieur du dessus, un programme qui simule une machine (existante ou non). Donc qui simule une architecture à base - généralement - de processeur, mémoire, registres, interruptions, etc. Les machines virtuelles Java en sont l'exemple le plus évident, mais on peut aussi citer les émulateurs de consoles/sasfépus ou certains débuggers.
Un interpréteur, strictement, est un automate qui évalue "à la chaîne" des expressions (les "instructions" du langage).
L'ambiguïté vient du fait qu'un processeur (et donc, par extension, une machine virtuelle, puisqu'elle en simule un) peut être assimilé à un interpréteur: il "éxecute" en effet des instructions à la chaîne. La différence majeure tenant, à mon sens, dans le niveau d'abstraction pratiqué. Un interpréteur travaille généralement avec des données de haut niveau (idéalement: des maths) qu'il _évalue_. Une machine virtuelle travaille généralement sur des données plus proches de celles que manipulerait une vraie machine (notamment dans le cas des émulateurs, mais la VM Java n'est pas si éloignée que cela d'une machine réelle, si on excepte sa quantité "faramineuse" (potentiellement infinie, en fait) de registres).
Bref, j'espère que j'ai pas trop dit de conneries.