代码之家  ›  专栏  ›  技术社区  ›  Utkarsh Sinha

可视化编程语言的执行流评估

  •  1
  • Utkarsh Sinha  · 技术社区  · 16 年前

    我最近在读有关可视化编程语言的书。所以我想出了两个“范例”。两者都有一个起点和几个终点。

    现在,您可以从起点开始,也可以从终点反向移动(终点的顺序是已知的)。

    从终点开始感觉好多了。你从第一个终点开始。检查所需的一切,并进行评估。我相信这是懒惰的评价。但当你有多个输入时问题就来了。您如何决定评估输入的顺序?

    你能给我指一下网上的一些文章/论文/什么吗。或者你能告诉我一些关键词吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Mau    16 年前

    如果我明白你的意思,在两个函数中使用相同的整数,就是:只需使用它两次,不需要引入并发性。如果您考虑的是已销毁的输入值的“实现”,则可以在使用它之前进行复制。

    int i = 2;
    int j = fun1(i);
    int k = fun2(i);
    int res = fun3(j, k);
    

    将变成:

          i = 2[A]
            |
          Clone[B]
           / \
          /   \
         /     \
       i_1      i_2
        |        |
       fun1[C]  fun2[D]
        |        |
        j        k
         \      /
          \    /
           \  /
           fun3[E]
            |
           res
    

    here

    自上而下(也就是从开始到结束),从左到右感觉比自下而上更自然,前提是自下而上实际上有一个明确的含义。关于后一点, 有了程序的结果,你不能总是计算输入:想想什么时候会发生什么 funXXX 不是内射的(例如 fun1(x) = x*x )因此不可逆。

    我希望我没有完全误解你的思路。

        2
  •  1
  •   Nick Johnson    16 年前

    topological sort 你的依赖关系图-也就是说,执行节点的顺序,这样你就永远不会执行一个节点之前的依赖关系。当然,这是假设图形中没有循环。

    这两种方法中哪一种最好在某种程度上取决于你在做什么。