mi piacerebbe essere in grado di fare qualcosa di simile questi due stanno facendo:sandboxing/corsa linea di codice Python per riga
Inventing on principle @18:20, Live ClojureScript Game Editor
Se non si vuole controllare i video, la mia problema è questo:
dire che ho avuto questo codice:
....
xs = []
for x in xrange(10):
xs.append(x)
...
mi piacerebbe fare un ambiente in cui posso eseguire il codice , dichiarazione per affermazione e guardare/rintracciare la gente del posto/i globali mentre cambiano. Forse dargli una lista di vars da tenere sotto controllo nei dizionari locali/globali. Come passare il codice e salvare le informazioni di stato.
In modo ottimale Mi piacerebbe salvare ogni stato ed è associato a dati di contesto (locali/globali) così posso verificare i predicati per esempio.
mi piacerebbe fare qualcosa di simile binarySearch esempio di Bret Victor Inventing on principle @18:20
Am I dare un senso? Trovo complicato da spiegare nel testo, ma i video vetrina quello che voglio provare :)
Grazie per il vostro tempo
Quello che ho provato/lettura/Googled:
code.InteractiveConsole
/code.InteractiveInterpreter
- il modulo
livecoding
: sembra funzionare per puro codice funzionale/stateless exec
/eval
magic: sembra che non riesca a ottenere il controllo a grana fine come mi piacerebbe.- il modulo
trace
non sembra essere neanche il modo. - Python eval(compile(...), sandbox), globals go in sandbox unless in def, why? < - Questo è vicino a ciò che voglio, ma compila l'intero string/codice e lo esegue in un unico passaggio. Se potessi eseguire un file di questo tipo, ma controllare la gente del posto tra ogni riga/dichiarazione ..
- run python source code line by line < - Questo non è quello che voglio
- How do Ruby and Python implement their interactive consoles? < - Questo argomento suggerisce che guardo nel modulo
code
ancora un po '
il mio prossimo passo potrebbe essere esaminando ast
e compilare il codice ed eseguirlo bit per bit, ma ho davvero bisogno di un orientamento .. Devo guardare più nella riflessione e la inspect
-module ??
Ho già utilizzato the Spin model checker, ma utilizza la propria DSL e mi piacerebbe fare la modellazione nel linguaggio di implementazione, in questo caso python.
Oh e BTW Conosco le implicazioni di sicurezza del codice sandboxing, ma non sto cercando di creare un ambiente di esecuzione sicuro, sto cercando di creare un ambiente molto interattivo, puntando a un modello di controllo o a un'asserzione del predicato per esempio.
Un debugger farebbe quello che chiedi? –
Non ne sono sicuro.Mi piacerebbe manipolare la gente del posto/globalmente, quindi se posso farlo dal debugger ... Hai controllato i video? * Inventare per principio * @ 18:20 e 1 minuto avanti mostra un po 'quello che voglio. –
Non posso contribuire molto in termini di risposta, ma questa è una domanda dannatamente buona (+1) – inspectorG4dget