Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: lucas25cba en 28 Octubre 2015, 20:20 pm



Título: [Python] Duda de (in)cultura
Publicado por: lucas25cba en 28 Octubre 2015, 20:20 pm
Buenas!
Recién empiezo con Python y me encuentro lleno de dudas.
Una de ellas es la siguiente (me surge al compararlo con Java):
- En Java hay un maquina virtual que interpreta el archivo .class (el que contiene los byte-codes) y el cual es compilado con javac.
- En Python, veo que es multiplataforma, y no logro ver tal "maquina virtual", simplemente veo que interpreta el codigo (script) y lo va ejecutando.
1) ¿Es tan así? ¿No hay maquina virtual alguna?
2) A diferencia de Java, donde puedo pasarle a mi compañero el .class para que lo ejecute, en python ¿debo pasarle el archivo con el codigo si o si para que lo pueda ejecutar? Me refiero: ¿No existe forma de "compilar" (o pre-compilar)?


Título: Re: [Python] Duda de (in)cultura
Publicado por: engel lex en 28 Octubre 2015, 20:40 pm
como ya dijiste, en java la maquina virtual simula un ambiente (sistema operativo) que interpreta el programa, es un lenguaje compilado... python es solo interpretado, no se compila nunca... lo más que puedes hacer es crear un "compilado" que es simplemente un ejecutable que contiene el interprete y el script


Título: Re: [Python] Duda de (in)cultura
Publicado por: tincopasan en 29 Octubre 2015, 10:04 am
no entiendo bien que entendés por compilar! si es crear un ejecutable, es como te dijeron, ahora python si compila, o sea a partir del archivo.py al compilarlo genera un archivo.pyc (que ahorra tiempo de proceso)pero tu compañero no podrá modificarlo salvo que lo decompile.

Edito:
ahí subí un archivo con lo que python entiende por compilar
http://www.mediafire.com/download/cirn8hbr4wgzylk/hola_mundo.pyc


Título: Re: [Python] Duda de (in)cultura
Publicado por: lucas25cba en 29 Octubre 2015, 13:21 pm
tincopasan: en tu enlace consigo bajar un archivo .pyc, nada mas... Seguro que tenes buenas intenciones, pero por norma general no ejecuto archivos descargados sin saber que hacen (aunque se llamen "hola mundo"...)

engel lex: con tu respuesta va tomando mejor forma mi duda dentro de mi cabeza  :P . Me refiero: Una característica de python es ser multiplataforma y considero que lo bueno de ello es la portabilidad (no tenes que estar compilando para cada pc/S.O.).
Por lo que entiendo, cada PC tiene su conjunto de instrucciones. El interprete va leyendo el script e interpretando (traduciendo) las lineas del script por el código maquina correspondiente.
Ahora bien, mi duda: si lo compilo tal como has dicho (interprete+script), para que sea portable y multiplataforma lo que obtengo, ¿como funciona el interprete "embebido" dentro del ejecutable para permitir ello?
Lo entiendo desde la perspectiva de java y sus JVM... pero si no hay maquina virtual en Python...  No se si me explico.




Título: Re: [Python] Duda de (in)cultura
Publicado por: tincopasan en 29 Octubre 2015, 13:38 pm
me caracterizo por poner virus en los script! decompilalo y mirá que tiene. No lo ejecutes, aprendé a compilar y tendrás un archivo con la misma extensión.