【发布时间】:2012-03-29 01:55:56
【问题描述】:
我希望能够做这两个人正在做的事情:
Inventing on principle @18:20 , Live ClojureScript Game Editor
如果你不想看视频,我的问题是:
假设我有这个代码:
....
xs = []
for x in xrange(10):
xs.append(x)
...
我想创建一个环境,我可以在其中执行代码、语句的语句并在局部变量/全局变量发生变化时观察/跟踪它们。也许给它一个变量列表以在本地/全局字典中跟踪。就像单步执行代码并保存状态信息一样。
理想情况下,我希望保存每个状态及其关联的上下文数据(本地/全局),以便我可以验证谓词。
我想做一些类似 Bret Victor 的 binarySearch 示例 Inventing on principle @18:20
我说得有道理吗?我觉得用文字解释起来很复杂,但视频展示了我想尝试的内容:)
感谢您的宝贵时间
我尝试/阅读/谷歌搜索的内容:
-
code.InteractiveConsole/code.InteractiveInterpreter -
livecoding模块:似乎适用于纯函数式/无状态代码 -
exec/evalmagic:好像我无法获得我想要的细粒度控制。 -
trace模块似乎也不是办法。 - Python eval(compile(...), sandbox), globals go in sandbox unless in def, why?
- run python source code line by line
- How do Ruby and Python implement their interactive consoles? code 模块
我的下一步是研究ast 并编译代码并逐位运行它,但我确实需要一些指导。我应该更多地研究反射和inspect-模块吗??
我之前使用过the Spin model checker,但它使用自己的 DSL,我只想用实现语言(在本例中为 python)进行建模。
哦,顺便说一句,我知道沙盒代码的安全隐患,但我并不是要创建一个安全的执行环境,而是要创建一个非常互动的环境,例如针对粗略的模型检查或谓词断言.
【问题讨论】:
-
调试器能满足你的要求吗?
-
我不确定。我想以编程方式操作本地/全局,所以如果我可以从调试器中做到这一点。你检查过视频吗? 在原则上发明 @ 18:20 和 1 分钟向前显示了我想要的。
-
我无法为答案做出太多贡献,但这是一个非常好的问题 (+1)
-
起初我想,'哦,嘿,我知道我可以推荐一个好的调试器'。我看了视频,然后我想,'python 是否存在类似的东西?那是类固醇的调试器。
-
@Droogans:我已经在 Scheme 中完成了,但是 Lisp 方言更容易,因为语言已经是可解析的形式(S 表达式)并且很容易复制 REPL。快速浏览一下,ClojureScript 示例看起来实际上是这样制作的 :)
标签: python dynamic programming-languages development-environment interpreter