[pyar] ¿Existe algo asi como un "compilador" Python?

Claudio Freire klaussfreire en gmail.com
Jue Abr 24 19:23:59 ART 2014


2014-04-24 18:36 GMT-03:00 fisa <fisadev en gmail.com>:
> Agarremos primero java y C#. De qué tipo son? La mayoría seguro
> respondería que son compilados. Pero en realidad no tienen esos 3
> pasos que vimos antes, sino que hacen algo parecido, algo como esto:
> 1) Escribo código.
> 2) *Una sola vez* lo compilo, con un compilador, pero no a binario!
> Compilo a un archivo con código "intermedio", parecido al binario,
> pero de un cachito más alto nivel.
> 3) *Cada vez que ejecuto mi programa*, la máquina virtual o runtime
> del lenguaje, va leyendo ese código intermedio, generando
> instrucciones binarias y las ejecuta.


Hay una diferencia sutil en un paso 3.b o 3.a, podríamos decirle, que
hace toda la diferencia entre C# y C++, o Java, PyPy y CPython.

El JIT.

Los intérpretes propiamente dichos, no "generan binario" para el
intermedio, sino que simplemente ejecutan las operaciones que el
intermedio describe. Está el binario del intérprete, pero es estático,
que consume datos del intermedio, y no un binario generado a partir
del intermedio. Eso hace CPython.

C#, Java y PyPy, lo que hacen, es efectivamente generar binario para
el intermedio, a medida que se da cuenta que podría ser más rápido que
interpretarlo. Eso es lo que se llama un JIT. Un lenguaje con JIT es
un bicho diferente a compilado o interpretado, tiene aspectos de
ambos, y tiene características de performance completamente
diferentes. Vale la pena hacer la diferencia.


More information about the pyar mailing list