[Python] Duda de (in)cultura

Iniciado por lucas25cba, 28 Octubre 2015, 20:20 PM

0 Miembros y 1 Visitante están viendo este tema.

lucas25cba

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)?

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

#2
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

lucas25cba

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.



tincopasan

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.