Ide 支持实时编码的工具,如Bret Victor';s";“按原则发明”;谈话

Ide 支持实时编码的工具,如Bret Victor';s";“按原则发明”;谈话,ide,demo,Ide,Demo,我看过一个已经广为人知的例子,前苹果用户界面设计师布雷特·维克托(Bret Victor)在修改源代码中的一个符号后,立即更新了运行代码,展示了令人惊叹的演示 为了让那些没有看过或没有时间看视频的人明白我的问题:我想用这样的工具来编写我自己的软件。他演示的工具是否可用,或者是否有其他类似的工具 不管是哪种语言/环境,我只想让我的代码运行,然后在源代码中更改一行,并立即看到更新的结果,而无需重新启动它 视频也可在上获得,关键点包括: -05:30-实时编码图形算法(空格) -14:30-实时编码

我看过一个已经广为人知的例子,前苹果用户界面设计师布雷特·维克托(Bret Victor)在修改源代码中的一个符号后,立即更新了运行代码,展示了令人惊叹的演示

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

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

视频也可在上获得,关键点包括:

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

克里斯·格兰杰(Chris Granger)正在建造一种名为“光桌”的东西,这看起来是朝着这个方向迈出的一大步。最初它只支持Clojure,但他承诺将来会支持其他语言

有一个用于Flash的实时编码工具(ActionScript3)。它允许在运行时更新方法、添加新字段/方法/类、更新嵌入式资产等,同时保留应用程序状态,就像Bret Victor的视频一样。有一些关于它的演示视频正在运行,这是迄今为止最令人印象深刻的一个

它不会强迫您进入任何新的IDE,它是一个单独的工具,当您在IDE中点击“保存”时,它会将增量更新发送到正在运行的应用程序


JavaScript支持也已宣布。

IPython笔记本就是朝着这个方向迈出的一步。虽然它更倾向于对科学问题进行交互式探索性分析,但我发现它非常具有互动性,而且开发起来很有趣

我还发现了实时代码。经过一些实验,我发现,它并没有涵盖布雷特·维克托哲学的所有原则。它有一个直截了当的语法,但是UI不适合交互开发。他们还有一段路要走

还有R。由于闪亮和针织的新发展,一些有趣的创新正在发生,这符合布雷特的哲学


我认为以下允许更改源代码中的行(并看到即时效果):

  • :在浏览器上编码(Lua),在连接wifi的iPad上查看输出
  • 加布里埃尔·弗洛里特。HTML、CSS在浏览器中运行
  • Neonux的现场草稿本。Mozilla扩展
  • 交互式操场:附带Xcode 6,用于使用Swift编程语言进行编码
  • :HTML、CSS、Javascript在浏览器中运行
  • :使用预览html插件
  • 注:我只有1,5-7的经验。对于其中的许多,我认为您不能将光标放在代码的某个部分,并突出显示图像的相关部分

    编辑:增加第4项(2014.10.27)、第5项(2014.10.31)和第6-7项(2015.03.12)

    编辑2(2015.06.25):来自(大多数是HTML/CSS/Javascript)


  • 代码管弦乐队成员最近发布了名为C.O.L.T的LiveCodeing工具。它支持JavaScript和ActionScript,看起来非常有前景。强烈建议您试用。

    我已经为Emacs、PyCharm和Eclipse构建了一个名为的插件,它涵盖了您询问的三个特性中的两个。当您键入代码时,它会立即更新海龟图形算法的结果

    它还显示每个赋值旁边的局部变量的状态。以下是二进制搜索算法的示例显示:

    def search(n, a):              | n = 3 a = [1, 2, 4] 
        low = 0                    | low = 0 
        high = len(a) - 1          | high = 2 
        while low <= high:         |         | 
            mid = (low + high) / 2 | mid = 1 | mid = 2 
            v = a[mid]             | v = 2   | v = 4 
            if n == v:             |         | 
                return mid         |         | 
            if n < v:              |         | 
                high = mid - 1     |         | high = 1 
            else:                  |         | 
                low = mid + 1      | low = 2 | 
        return -1                  | return -1 
                                   | 
    i = search(3, [1, 2, 4])       | i = -1 
    
    def搜索(n,a):|n=3 a=[1,2,4]
    低=0 |低=0
    高=透镜(a)-1 |高=2
    虽然很低,但谁做的
    您将在React和ELM社区以及前端函数式编程社区中发现许多有趣的东西

    最近一些试图提供此类开发环境的全堆栈平台包括:

    : Andreessen-Horowitz/Y-Combinator初创公司,由Chris Granger出资230万美元,Chris Granger是Clojure的一位有影响力的程序员,他已经建造了灯塔

    技术:Rust(后端)、TypeScript(前端)以及React概念的自制实现(他们称之为“microReact”)

    : 不是一家公司(还没有?),而是由保罗·丘萨诺(著名著作《斯卡拉的FP》的作者)发起的帕特伦运动支持

    技术:Haskell(后端),ELM(前端)


    注意:您可以看到这些工具背后的人都是经验丰富的函数式程序员。检查“如何工作”部分


    工作原理->函数式编程 程序有状态

    布雷特·维克托为什么能拍下那部录像

    因为:

    • 他的体系结构明确地描述了状态突变
    • 他使用功能纯度
    • 他将历史事实记录为状态,而不是当前UI状态
    受此演讲启发的一个工具是ELM语言

    榆树:

    因此,调试器的根本是Elm本身的设计。如果你这样做 不是从语言层面的正确设计选择开始, 创建一个时间旅行调试器很快就会变得极其复杂。 即使是部分实现必要设计的语言 需求将面临严峻挑战

    因此,您真正需要了解的是,有趣的不是技术,而是底层软件架构。一旦有了架构,添加这样的调试特性就不难了