16/09/2019, 05:16:30 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Puedes practicar LATEX con el cómodo editor de Latex online
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Hacking Python  (Leído 1119 veces)
0 Usuarios y 1 Visitante están viendo este tema.
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.275

Vean mis posts activos en mi página personal


Ver Perfil WWW
« : 08/09/2009, 06:49:37 pm »

He estado aprendiendo Python por influencia de varios fans del lenguaje, y la verdad estoy bastante contento.

Sin embargo ahora tengo interés en meterme en algunos detalles de la implementación del lenguaje mismo.
Me intriga en particular cómo está diseñado el tipo int.

Según he visto, el código fuente de Python está hecho en C.
Hay algunas cosas extrañas, como una burda implementación de "herencia" al introducir con una macro unos campos básicos que están en toda struct que define objetos de Python.

No obstante, no me molesta eso, sino que quiero entender cómo es que el tipo int es capaz de almacenar y manipular enteros de un número de cifras arbitrariamente grande.
Estoy mirando el código fuente de la versión 2.6 del lenguaje, porque en las versiones más nuevas no encuentro el archivo de cabecera intobject.h.

Aunque en  intobject.h y intobject.c están definidas e implementadas las operaciones sobre enteros int, al parecer tengo que ir más "adentro" del código, para ver cómo se define un objeto general en Python.
Sospecho que todos los objetos se han definido con el espíritu de "listas".
Así que un entero sería una lista de dígitos, o algo así.

¿Alguien tiene más claro todo esto, o dónde debiera mirar?
Es bastante complicado buscar en todas las librerías y buscar los detalles.
Cualquier ayuda será agradecida.

En línea

topo23
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Argentina Argentina

Mensajes: 940


Ver Perfil
« Respuesta #1 : 08/09/2009, 07:29:32 pm »

Creo que lo que realmente estas buscando es el tipo long http://svn.python.org/view/python/trunk/Objects/longobject.c?view=markup

En particular la representacion en memoria esta aca
http://svn.python.org/view/python/trunk/Include/longintrepr.h?view=markup

Ante cualquier duda podrias preguntar en la lista de python
http://mail.python.org/mailman/listinfo/python-list

PD En la version 3.x se han unificado ambos y solo queda el tipo long.
En línea

.
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.275

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #2 : 08/09/2009, 08:35:43 pm »

Gracias.

Yo arranqué directamente con el uso de la versión 3.x, por eso no estaba enterado de esos cambios, y no me daba cuenta.

Seguiré investigando.

En línea

Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!