Problemas con python 2.4

Chema Cortés py en ch3m4.org
Mie Ene 4 00:20:05 CET 2006


El Lunes, 2 de Enero de 2006 10:28, Antonio Castro escribió:

> Coregirme si me equivoco porque habló sin conocimiento de pyarray, pero
> es que en python todo son objetos, y a diferencia de C existe un estricto
> control de errores de acceso a memoria.

Además, en python existe un "recolector de basura" que libera la memoria 
automáticamente.

> Lo que quiero decir es que un tipo array en C es muy efectivo porque
> viene a ser como trabajar directamente con punteros, lo cual le dá el
> máximo de eficiencia, pero esto que es normal en C, opino que en python
> destrozaría la filosofía del lenguaje.
>
> ¿No podría llegar un punto en que interesara hacer aparte un módulo en C
> para el manejo de esos datos?

Lo que quieres decir es que la "aritmética de punteros" de C es muy eficiente. 
La cuestión es que esta aritmética de punteros sólo se puede utilizar en 
lenguajes fuertemente tipados (se necesita conocer previamente el tamaño de 
los objetos).

Lentamente, Python va incorporando nuevas optimizaciones para mejorar su 
velocidad y eficiencia sin que cambie casi nada de la sintaxis del lenguaje. 
(Si miras los ficheros de cambios de cada versión de python podrás ver cómo 
se van añadiendo estas optimizaciones). En estos momentos, se está 
discutiendo mucho sobre incorporar "tipos" de datos explícitos, lo que 
abriría el camino a utilizar arrays homogéneos al estilo C. Pero de momento, 
el módulo 'numarray' sería precisamente ese módulo de C por el que te estabas 
preguntando:

  http://www.stsci.edu/resources/software_hardware/numarray/


Otra posibilidad sería utilizar 'pyrex', con el que se puede compilar módulos 
en C utilizando una sintaxis muy similar al python, pero más "optimizada" 
para la compilación:

  http://wiki.python.org/moin/Pyrex




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