差异执行如何工作?

时间:2008-12-16 16:49:50

标签: model-view-controller language-agnostic differential-execution

我在Stack Overflow上看到了一些这样的提及,但是盯着维基百科(相关页面已被删除)并在MFC dynamic dialog demo没有任何启发我。有人可以解释一下吗?学习一个根本不同的概念听起来不错。


基于答案:我认为我对此有了更好的感受。我想我第一次没有仔细查看源代码。在这一点上,我对差异执行情有不同的看法。一方面,它可以使某些任务变得相当容易。另一方面,启动并运行(即,用您选择的语言设置)并不容易(我确信如果我更好地理解它)...虽然我猜它的工具箱只需要制作一次,然后根据需要进行扩展。我认为为了真正理解它,我可能需要尝试用另一种语言实现它。

4 个答案:

答案 0 :(得分:93)

答案 1 :(得分:12)

差异执行是一种根据外部事件更改代码流的策略。这通常通过操纵某种数据结构来记录变化来完成。这主要用于图形用户界面,但也用于序列化等内容,您可以将更改合并到现有的“状态”中。

基本流程如下:

Start loop:
for each element in the datastructure: 
    if element has changed from oldDatastructure:
        copy element from datastructure to oldDatastructure
        execute corresponding subroutine (display the new button in your GUI, for example)
End loop:
Allow the states of the datastructure to change (such as having the user do some input in the GUI)

这样做的好处很少。一,它是分离 执行您的更改和实际 操纵支持数据。哪个好 多个处理器。二,它提供了低带宽的方法 在程序中传达变化。

答案 2 :(得分:11)

答案 3 :(得分:3)

我发现这个概念与经典数字电子产品的状态机非常相似。特别是那些记得他们以前的输出的人。

根据(您的代码在此处),下一个输出取决于当前输入和先前输出的机器。此当前输入只是前一个输出+(USER,INTERACT HERE)。

用这样的机器填充表面,它将是用户交互式的,同时代表一层可变数据。但在这个阶段它仍然是愚蠢的,只是反映用户与底层数据的互动。

接下来,根据(您的代码),将表面上的机器互相连接,让它们共享笔记,现在我们让它变得智能化。它将成为一个交互式计算系统。

所以你只需要在上面的模型中的两个地方提供你的逻辑;其余的由机器设计本身来处理。这就是它的好处。