1

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

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

变量 value1 是 AVERAGE(input1, input2);

变量条件1为真;如果条件 1 则 PLOT(value1);

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


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

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

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

4

5 回答 5

3

卢阿

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

于 2009-02-10T20:03:02.087 回答
1

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

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

于 2009-02-10T20:10:12.503 回答
1

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

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

于 2009-02-10T20:42:50.337 回答
0

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

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

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

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


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

于 2009-02-10T19:54:17.677 回答
0

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

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

于 2009-02-10T19:56:33.443 回答