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