【问题标题】:How do visual programming languages work?可视化编程语言如何工作?
【发布时间】:2011-05-15 21:01:05
【问题描述】:

我正在探索向应用程序用户展示可视化界面的可能性,该界面允许他们以数据流风格(类似于 Yahoo Pipes)输入一些自定义代码/功能。

我想知道,例如在 Pipes 中,他们的可视化编辑器如何工作。可视化代码是否可以编译成文本语言并存储在数据库中?或者可以将各个块、连接器、变量等都存储在数据库中吗?

Microsoft 的 Visual Studio 等可视化编程语言 IDE 怎么样?代码是直接从可视界面解释的吗?

【问题讨论】:

    标签: ide dataflow


    【解决方案1】:

    您在屏幕上看到的只是冰山一角。组件是不同大小的、困难或简单的程序,具有公共接口。在数据流编程中,这些接口是生产者和消费者(输出和输入),因此组件可以可视化为一个黑盒子,在其输入和输出端都有引脚。当您连接引脚(端口)时,您将一个程序的输出引导到另一个程序的输入。这些组件已为您预编译,它们已准备好运行,您只需通过连接它们来设置它们的消费者(输入)和生产者(输出)。这就是为什么它们是黑盒子:它们是程序,您无法更改(除非您有源代码)。

    这些组件旨在连接到其他组件。在某些情况下,组件可以独立运行,但通常必须将它们连接起来才能完成全部工作。基本上,有三种组件: - 来源:生成输出(需要进一步处理或显示), - 处理:接收输入,处理它,然后将其传递给进一步处理或显示, - sink:接收输入,显示或保存,不传递给任何人。

    一个典型的完整数据流构造包含一个source-process-process-sink链,其中process-type组件的数量甚至可以为零(source生成的数据由sink组件显示)。您可以考虑这三个组件,因为它们以前是一个程序,但它们已经损坏,您现在可以重新组装它们。

    最著名的数据流系统之一是 Unix shell。 CLI 命令是组件。它们是预编译的,您只需通过输入“|”来定义一个链它们之间。此外,大多数“源”命令可以单独使用,例如 ls,并且大多数“接收器”组件可以从定义为参数的文件中接收输入,例如更多

    【讨论】:

    • 很好的解释。那么,在一个像 Yahoo Pipes (比方说是 PHP)这样设计的系统中,这些源、进程和接收器可能只是动态调用和运行的实际 PHP 类的可视化表示?那会是一个好方法吗?或者 - 在用户编辑此数据流之后 - 编译和存储然后获取和运行这些类是更好的方法吗?
    • 抱歉,我不熟悉 Yahoo Pipes。我用 C++ 编写了一个数据流系统,其中数据流程序(组件定义和连接列表)首先编译为 C++,然后编译为 .o,然后与预编译的组件和调度程序 .o 文件链接在一起。或者参见 Unix shell,其中组件是可执行文件,连接是文件描述符(stdin、stdout)。数据流只是一种方法,它没有定义任何技术。电子表格也是 DF 系统,其中组件是单元格中的公式,连接是引用 - 在这种情况下,原始问题甚至不适用。
    猜你喜欢
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 2011-09-21
    相关资源
    最近更新 更多