Python vs C, interpretado vs compilado, etc.

Alberto Valverde alberto en toscat.net
Vie Ene 16 11:53:22 CET 2009


Francesc Alted wrote:
> A Thursday 15 January 2009, Antonio Beamud Montero escrigué:
>   
>> Antes de meterte con modulos en C, te recomiendo que ejecutes el
>> código con la libreria JIT pysco. En mi caso, un analizador de flujos
>> mpeg2 paso a ir 20 veces más rápido con solo añadir las lineas:
>>
>>  import psyco
>>  psyco.full()
>>
>> Por lo que no tuve que optimizar nada (y eso que ya tenía la mitad
>> del código preparado para pyrex).
>>     
>
> Conviene advertir que Psyco sólo funciona para plataformas i386 de 
> 32-bits, y que ya empiezan a haber demasiados procesadores/plataformas 
> de 64-bits como para ignorar este hecho.
>
> Psyco fue una tremenda revolución en su dia, y es una lástima que su 
> autor no haya hecho una versión para 64-bits, pero parece que decidió 
> concentrar todos sus esfuerzos en PyPy [1], que a la postre es una 
> continuación, pero a lo bestia, de Psyco.  Por desgracia, los 
> objectivos de PyPy son tan ambiciosos (hacer de Python un lenguaje más 
> rápido que C, como reza la página principal del proyecto [2], con un 
> poco de guasa, todo sea dicho), que empiezo a dudar que el proyecto 
> pueda ser funcional algún dia.
>   
Pues a mí no me parece algo tan descabellado, tal vez porque confío más 
en la capacidad de un compilador en generar código-máquina eficiente que 
en la de un humano para cualquier problema medianamente complejo. :)

Creo que es precisamente es en los problemas de cierta complejidad donde 
un lenguaje de alto nivel como python permite al programador abstraerse 
de micro-optimizaciones y concentrarse en estructuras de datos y 
algoritmos eficientes. Dejarle al compilador la tarea de optimizar el 
cómo el hardware implementa los algoritmos me parece ideal.

Como anécdota para "demostrar" que PyPI ya es funcional hasta cierto 
punto comento que estamos utilizándolo para compilar automaticamente 
funciones vectoriales escritas en python para alimentárselas a 
numpy/scipy de una manera similar a la que se describe aquí:

http://www.enthought.com/~ischnell/paper.html

Saludos,
Alberto
_______________________________________________
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