这通常涉及:你的应用已经得到足够广泛的,它的时间增加一些进入编程能力,使它的灵活性。一个例子可能是一个财务应用程序-你想添加一个公式编辑,以便可以创建自己的定的公式,而无需重新编码。

你必须做出选择:你创造你自己的分析器,分析器、和翻译/编译器链,这可能需要很长时间,并且可能会被不正确地做?或者你只是嵌入另一个脚本语言,其中有的问题,它可能会膨胀你的代码和获得您的应用程序的安全漏洞。

你会如何平衡的取舍和作出这个决定?

有帮助吗?

解决方案

有没有交易取舍 - 嵌入一个彻底的测试,有据可查的解释器。否则,你会喜欢的MAXScript可憎的结束。

其他提示

怎么样的一个插件系统?有几个优点:

  • 让客户开发商开发的在环境中的来源应用程序开发。
  • 在现代的开发。平台,你赢得很多的控制和安全通过软件的合同。
  • 如果它的设计正确,您可以正确地指责膨胀和失败的插件,引起这样的铬不时闪光或其他第三方,在崩溃。
  • 很容易增加额外的安全通过发放许可证/证书.
  • 很容易合并的一个插件应用程序,如果是惊人的,你想要所有客户拥有它。

除非DSL是很简单的解析器/解释器适合在一个页面上,我建议嵌入现有的脚本语言。

最近我花了几个月在我继承了一个项目,该项目包含一个完全本土的脚本语言工作。我投入了大量的时间在了解解析器和解释,这样我就可以修复漏洞,使其线程安全,扩展它,优化它。另外还有就是学习和理解这个新的脚本语言是woked几乎一样但并非很最一样,为别人我已经知道了怪癖的时间。   我宁愿有使用的时候嵌入现有语言如Ruby或者Lua中,并调整它来满足我们的需求。

则用户将必须从更容易编程中,以较少的缺点和疑难杂症的一个语言中受益。我会从一个精心设计和流行的语言的内部更深的理解中受益,而不是在“myScript的”获得relativly毫无价值的专业知识。

我将使用现有的解析器生成器(如ANTLR或哈斯克尔/ Scala的解析器组合)创建我自己的解释。这真的并不难,因为这一切,简单的语言,它真的很容易。我创建了一个下午一个相当简单DSL的实现,它完美地跑在第一时间(没有错误)。

随着中说,你不希望有设计自己的图灵完备的语言。如果你的需求是复杂的,你应该嵌入的脚本语言。如果你是在JVM上,JRuby和Clojure的是这样的事情优秀的候选人,特别是考虑到自己的长处在内部DSL的区域。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top