El 17/11/07, Franco Catrin L. <[EMAIL PROTECTED]> escribió:
> Alejandro Weinstein escribió:
> > On Nov 16, 2007 1:16 PM, Franco Catrin L. <[EMAIL PROTECTED]> wrote:
> >
> >> El segundo link casi me deja ciego ;)
> >>
> > [sobre la diferencia entre maquina virtual e interprete]

.java -> compilador -> bytecode -> JIT -> binario x86

> Luego tu procesador ejecuta el binario x86 generado como si hubiera sido
> hecho en C/ASM

.py -> compilador -> tokens -> interprete de tokens -> funciones del intérprete

> No hay generacion de codigo nativo, sino que el inteprete en base a los
> tokens comienza a ejecutar distintas secciones de si mismo.  Imaginate
> un gigante "if" o un gigante "switch/case" que va consumiendo tokens.

Excelente respuesta! Me quedó mucho más claro.

Yo pensaba que el bytecode de Java (CAFEBABE) se interpretaba igual
que el de Python.

Los conceptos de Java que tengo son lo que aprendí en el instituto,
que no fue mucho... de hecho tuve la mala suerte de que el profe se
iba a ir a fin de semestre así que tenía cero ganas de enseñarnos a
trabajar con Swing/AWT y con Java Server Pages :(

> Para el caso de python puedes mirar en Python/eval.c
> http://svn.pythonmac.org/python24/python24-fat/Python/ceval.c
>
> Para el caso de JIT hay una charla de Miguel de Icaza con ejemplos y
> todo, incluso generando bytecode a partir de Python, una de las gracias
> de Mono y .NET

¿La que dio en la UOC? Buenísima.

-- 
Rodrigo Fuentealba

Responder a