相关疑难解决方法(0)

支持实时编码的工具,如布雷特·维克多的"发明原则"谈话

我观看了一个众所周知的视频,前苹果UI设计师Bret Victor在源代码中改变了一个符号之后,立即更新了运行代码,展示了令人惊叹的演示.

为了让那些没有看到或没有时间观看视频的人明白我的问题:我想使用这样的工具来编写我自己的软件.他演示的工具是否可用,还是有其他类似的工具?

无论哪种语言/环境都无关紧要,我只想让我的代码运行然后在源代码中更改一行,并立即看到更新的结果而不重新启动它.

该视频也可在YouTube观看,关键点是:

  • 03:30 - 05:30 - 实时编码图形算法(空间)
  • 11:00 - 14:30 - 实时编码一些游戏代码(空格和时间)
  • 17:30 - 21:30 - 实时编码局部变量(状态)

ide demo

75
推荐指数
4
解决办法
1万
查看次数

使用sys.settrace可以完成哪些很酷的黑客攻击?

我喜欢能够修改发送到函数的参数,使用settrace,如:

import sys

def trace_func(frame,event,arg):
    value = frame.f_locals["a"]
    if value % 2 == 0:
        value += 1
        frame.f_locals["a"] = value

def f(a):
    print a

if __name__ == "__main__":
    sys.settrace(trace_func)
    for i in range(0,5):
        f(i)
Run Code Online (Sandbox Code Playgroud)

这将打印:

1
1
3
3
5
Run Code Online (Sandbox Code Playgroud)

你还可以使用其他很酷的东西settrace吗?

python

22
推荐指数
3
解决办法
7673
查看次数

逐行运行python源代码

给定一个Python源代码,是否可以逐行运行代码,就好像你在调试一样?

当谈到函数调用时,我也想"进入"函数.

python

13
推荐指数
2
解决办法
2万
查看次数

如何在不导致Haskell重新编译的情况下更改数据类型?

在观看Bret Victor演讲视频后,我受到启发,写了一个与他在演讲中展示的开发环境有些类似的快速黑客.

基本上这个想法是,一个人在一个窗口中运行app,每当一个人在源文件中保存更改时程序就会改变.

这适用于小的更改,除了我不能在不关闭应用程序和重新编译的情况下更改代码中的状态类型.

如何解决表达式问题并使我的状态的数据类型能够更改而不会导致重新编译?

PS这是代码.我原本不想发帖,因为它真的很乱,而且很快被黑客攻击,但是人们想要它,所以他们可以得到它.

首先是显示器和空闲模块,(这是一个快速的黑客,所以我没有弄清楚如何将它们作为真正的模块).

Idle.hs

\state -> do
    counter <- readIORef state
    writeIORef state ((counter + 1)`mod`3)
    postRedisplay Nothing
Run Code Online (Sandbox Code Playgroud)

Display.hs

\state -> let
cube w = do 
    renderPrimitive Quads $ do
        vertex $ Vertex3 w w w
        vertex $ Vertex3 w w (-w)
        vertex $ Vertex3 w (-w) (-w)
        vertex $ Vertex3 w (-w) w
        vertex $ Vertex3 w w w
        vertex $ Vertex3 w w (-w)
        vertex $ Vertex3 (-w) w (-w) …
Run Code Online (Sandbox Code Playgroud)

haskell

10
推荐指数
1
解决办法
521
查看次数

Ruby和Python如何实现他们的交互式控制台?

在为我的编程语言实现解释器时,我首先想到了一个简单的控制台窗口,它允许用户输入一些代码,然后作为独立的程序作为shell执行.

但是存在严重的问题:如果用户输入的每一行代码都作为独立程序处理,它必须通过标记器和解析器,然后由解释器执行 - 那么函数呢?

  • Python/Ruby交互式控制台(IDLE,irb)如何"共享"代码?如何处理代码?

例:

>> def x:
>>  print("Blah")
>> 
>> x()
Run Code Online (Sandbox Code Playgroud)

函数存储在哪里,以便可以随时调用它?

交互式控制台如何将所有输入的内容视为一个程序,而不是一遍又一遍地执行所有操作?

ruby python interpreter interactive command-line-interface

8
推荐指数
1
解决办法
591
查看次数

Python eval(compile(...),sandbox),全局变量在沙箱中除非在def中,为什么?

考虑以下:

def test(s):
    globals()['a'] = s

sandbox = {'test': test}
py_str = 'test("Setting A")\nglobals()["b"] = "Setting B"'
eval(compile(py_str, '<string>', 'exec'), sandbox)

'a' in sandbox # returns False, !What I dont want!
'b' in sandbox # returns True, What I want
'a' in globals() # returns True, !What I dont want!
'b' in globals() # returns False, What I want
Run Code Online (Sandbox Code Playgroud)

我甚至不确定如何询问,但我希望函数的全局范围成为我打算运行它的环境,而不必在eval期间编译函数.这可能吗?

感谢您的任何意见

def test(s):
    globals()['a'] = s

sandbox = {}

# create a new version of test() that uses the …
Run Code Online (Sandbox Code Playgroud)

python scope eval sandbox

4
推荐指数
1
解决办法
2561
查看次数