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