Python vs C, interpretado vs compilado, etc.

Chema Cortes py en ch3m4.org
Mie Feb 4 03:21:56 CET 2009


El Tuesday 03 February 2009 10:57:53 Yasser Gonzalez Soto escribió:
> Compilado
>...

> Interpretado
> ...

> Similitud
> ....

Creo que es salirse del tema, pero cada vez está menos clara la 
diferencianción entre compilado e interpretado. Por un lado, un lenguaje como 
java compila a bytecode, que luego se interpreta por la máquina virtual JVM; 
por otro lado, hay CPUs que simulan juegos de instrucciones de otras 
arquitecturas, desensamblándo en tiempo de ejecución el código máquina en 
microcódigos, de modo similar a lo que haría un intérprete.

Seguir hablando de "compilado" e "interpretado" no tiene ahora mismo mucho 
sentido; lo relevante es diferenciar entre "estático" y "dinámico". El 
primero necesita el conocimiento completo de todos los elementos que 
intervienen en el programa antes de su ejecución, se vayan a usar o no; el 
dinámico acumula el conocimiento en tiempo de ejecución, pudiendo adaptarse 
según las circunstancias.

En cuanto a rapidez, un lenguaje "estático" se puede optimizar para que sea 
más rápido y/o efectivo, pero resultará improductivo cuando se necesite 
realizar cambios menores o frecuentes. También resulta complicado para 
adaptar diferentes códigos obtenidos de distintas fuentes, sobre todo si para 
ello se requiere transformar estructuras de datos según las interfaces. Para 
todo ésto, los lenguajes dinámicos resultan más apropiados, siendo ideales 
como nexo entre las distintas librerías, y sin resentirse demasiado en el 
tiempo global de ejecución. 

Si además tenemos en cuenta las metodologías de desarrollo, las 
modernas "metodologías ágiles" se llevan muy bien con los lenguajes 
dinámicos, consiguiendo ciclos de desarrollo más cortos y menores tiempos de 
respuesta en mantenimiento. Estos tiempos también son importantes, no sólo 
los de ejecución.

En cuanto a "efectividad",...todavía suena a ciencia ficción, pero sería 
posible que los lenguajes dinámicos llegaran a usar menos memoria y fueran 
más rápido que los estático. La tendecia actuál es a que las optimizaciones 
se hagan en tiempo de ejecución, no en tiempo de compilación, con el fin de 
aprovechar mejor las CPUs multicores. Cuando llegue ese día, los lenguajes 
estáticos perderán su gran ventaja sobre los dinámicos. Ya hay arquitecturas 
como .Net donde un lenguaje dinámico (ironpython) se aproxima bastante a la 
ejecución de uno estático (C#).

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.python.org/pipermail/python-es/attachments/20090204/422365f4/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es