【问题标题】:Real time scripting language + MS DLR?实时脚本语言 + MS DLR?
【发布时间】:2009-02-10 19:34:43
【问题描述】:

首先,我应该让你们知道我想要做什么。我正在处理的项目有一个需要构建自定义脚本系统的要求。这将由使用该应用程序的非程序员使用,并且应该尽可能接近自然语言。一个例子是,如果用户需要运行自定义模拟并绘制输出,他们编写的代码需要看起来像

变量 input1 为 10; 变量 input2 为 20;

变量 value1 是 AVERAGE(input1, input2);

变量条件1为真; if condition1 then PLOT(value1);

可能没有多大意义,但这只是一个例子。 AVERAGE 和 PLOT 是我们想要定义的函数,它们不应该被允许改变它们,甚至不应该看到它们是如何工作的。 DLR 可以实现这样的事情吗?如果不是,我们还有什么其他选择(从 ANTRL 开始定义语法,然后继续?)?将来这可能也需要使用 XBAP 和 WPF 运行,所以这也是我们需要考虑的事情,但在 dlr 和 xbap 上还没有看到太多。谢谢,希望这一切都有意义。


Lua 不是一种选择,因为它与他们已经习惯的不同。

Ralf,它是被动的,老实说,结果应该返回给用户的时间范围可能是 1/100 秒,一直到 2 周或一个月(非常复杂的数学函数) .

基本上,他们已经购买了一个系统,可以满足他们的一些需求,并包含一种自定义脚本语言,可以完成我上面提到的功能,他们不想学习新的,他们基本上只是想要我们复制它并添加功能。我想我会从 ANTRL 开始,然后从那里开始。

【问题讨论】:

  • 任何需要超过几秒钟的事情都不应该使用本土语言来完成。如果您谈论的是一个月的加班时间,那么在挂钟时间内,用更快的语言培训用户然后让他们使用更慢的语言可能会更快。

标签: scripting xbap dynamic-language-runtime


【解决方案1】:

Lua

它小巧、快速、易于嵌入、便携、可扩展且有趣!

【讨论】:

    【解决方案2】:

    Lua 绝对是软实时系统(如电脑游戏)的最佳选择。 有关详细基准,请参阅 http://shootout.alioth.debian.org/

    但是,上次我检查时,Lua 使用了标记和清除垃圾收集器,这可能会导致实时系统中的截止日期违规和非确定性抖动。

    【讨论】:

    • 这是一个增量 GC,您可以在每个周期轻松调用它,这使得它执行非常小的步骤。与任何事情一样,先进行测试。
    【解决方案3】:

    我相信您理论上可以使用 DLR,但我不确定在 XBAP(部分受信任?)场景中的支持。

    如果您托管 DLR,您将很快能够利用 IronRuby 或 IronPython 脚本。在创建自己的语言实现时,您可能希望查看这些实现。如果您将问题发布到IronPython mailing list,我相信您会在 XBAP 场景中得到更好的答复,并且那里的一些开发人员创建了ToyScript

    【讨论】:

      【解决方案4】:

      您要满足什么样的实时要求?模拟是硬实时模拟(某种硬件在环模拟 ==> 截止时间小于 1/1000 秒)? 或者您是否希望脚本系统对用户输入“反应”==> 1/10 就足够了。

      我不是 MS DLR 方面的专家,但据我所知,它不支持硬实时系统。您可能想查看 Java (RTSJ) 的实时规范

      【讨论】:

        【解决方案5】:

        首先,我认为定义自己的语言不是要走的路。

        • 主要是因为您可以为程序员非程序员获得的最大生产力收益是开发工具。您(以及我们其他 99.9% 的人)编写的工具不会像他们的产品那么好。
        • 语言设计很难
        • 语言支持和文档,也很难

        我建议寻找一个预先构建的解决方案。如果您能找到一种可以锁定某些功能的语言,那将是一个很好的起点。 MatLab 将是我想到的第一个。

        最后,放弃自然语言部分,BASIC、COBOL 和 YA-TDWTF-Lang 都尝试过但都失败了。


        完全披露:我在一家正在开发通用领域特定语言“系统”的公司工作。它的目标是数据输入/文本输出应用程序,所以它不是合适的,它还不是测试版。结果是我有点知识渊博和有偏见。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-15
          • 1970-01-01
          • 1970-01-01
          • 2010-11-26
          • 1970-01-01
          • 1970-01-01
          • 2020-03-18
          • 1970-01-01
          相关资源
          最近更新 更多