[pyar] [OT] Encuesta: ¿qué debería tener un IDE python?

Mariano Reingart reingart en gmail.com
Mar Sep 14 16:48:37 ART 2010


2010/9/14 david weil <tenuki en gmail.com>:
> 2010/9/13 Mariano Reingart <reingart en gmail.com>:
>> En otros lenguajes se llama "Edit-and-Continue" (es una característica
>> de VB y creo de algunos lenguajes en .NET).
>
> Smalltalk lo tiene desde *siempre* (ie., 80s en adelante ;-) ).
>
> Visual studio, con c/c++ tambien te lo permite (con algunas restricciones).
>
>
>> Lamentablemente es un poco improbable de lograrlo en python, salvo que
>> alguien se ilumine sobre como mutar el código "compilado" en tiempo de
>> ejecución.
>
> creo que no es imposible cambiar una clase mientras se ejecuta, digo,
> por eso de que es dinamico, etc.. pero se me ocurre que si hay
> problemas, si queres redefinir cosas del modulo donde esta y volver a
> cargarlo completo, etc..

Cambiar algún atributo no es dificil (incluso si es una funcion o método).
El tema es de modificar el bytecode compilado en el stack de la
maquina virtual mientras el programa este vivo. Si no me equivoco,
esas cosas son de solo lectura.

O sea, si entiendo bien, podés hacer un reload (hasta py3k que no lo
soporta más), y eso recarga los módulos, pero no cambia el código que
se esta ejecutando (y tampoco las clases o funciones definidas con
anterioridad).

>> Lo que si se podría hacer es poner una interrupción (breakpoint) y
>> saltear o reemplazar el comportamiento de una linea simple (por ej.)
>
> no es tan facil. podes saltar a otro punto de una misma funcion
> siempre y cuando no saltes adentro de un for o while o try/except,
> etc., y no estoy seguro de si los podes saltar por encima (digamos
> saltar a un lugar posterior a un contexto de esos).

Por eso decía de linea simple.
Si me equivoque en a=b+1 y queria poner a=b-1, el debuger (integrado
en el editor) podría detectar que es un cambio menor y no hace falta
recompilar el código, simplemente poner un breakpoint y ejecutar la
nueva linea en vez de la vieja cuando se llega a ese punto.
Lo mismo se puede hacer a mano con pdb, poniendo un breakpoint,
ejecutando código arbitrario en la consola, saltando la linea con
problemas y dandole continuar.

Si cambio alguna estructura de control, tendría que avisar que hay que
recargar/recompilar (como hacen los IDE de visual studio).

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com



More information about the pyar mailing list