在现有代码库中支持哪种脚本语言?

时间:2008-08-18 23:05:04

标签: scripting data-driven

我正在考虑向现有代码库添加脚本功能,并且正在权衡各种软件包的优缺点。 Lua可能是最明显的选择,但我想知道人们是否根据他们的经验提出任何其他建议。

脚本将在某些事件中触发,并可能会驻留一段时间。例如,在启动时,脚本可以定义程序作为多个按钮呈现给用户的若干选项。选择其中一个按钮后,程序将通知脚本可能发生进一步事件的位置。

这是唯一真正的要求;

  1. 必须是可从源代码
  2. 编译的跨平台库
  3. 脚本必须能够调用已注册的代码端函数
  4. 代码必须能够调用脚本端函数
  5. 在C / C ++代码库中使用。

9 个答案:

答案 0 :(得分:3)

根据我自己的经验:

  • 的Python。恕我直言这是一个不错的选择。我们拥有一个非常庞大的代码库,有很多用户,他们非常喜欢它。
  • 红宝石。有一些非常好的应用程序,如Google Sketchup,使用它。我写了一个Sketchup插件,认为它非常好。
  • 的Tcl。这是老派可嵌入的脚本语言的选择,但它现在没有很多动力。虽然它的质量很高,但他们在哈勃太空望远镜上使用它!
  • 的Lua。我只用它做了婴儿用品,但IIRC它只有一个浮点数字类型,所以请确保对你正在使用的数据不是问题。

我们很幸运能够生活在脚本的黄金时代,所以如果你选择任何一种流行的版本,很难做出错误的选择。

答案 1 :(得分:1)

我和Spidermonkey玩过一点点。看来你的情况至少值得一看。我也听说过Lua的好消息。使用javascript脚本语言的一个重要论点是,许多开发人员已经知道它并且从开始可能会更舒服,而Lua很可能会有一点学习曲线。

我不是完全正面但我认为蜘蛛侠是你的4个要求。

答案 2 :(得分:1)

我为此目的广泛使用了Python,并且从未后悔过。

答案 3 :(得分:1)

Lua拥有最直接的C API,用于绑定到我曾经使用过的代码库。事实上,我通常会手动快速滚动绑定。然而,如果没有像swig这样的生成器,你通常不会考虑这样做。此外,它通常比替代品更快,更轻,coroutines是一个非常有用的功能,很少有其他语言提供。

答案 4 :(得分:1)

AngelScript

  

允许您调用标准C函数和C ++方法,而无需代理函数。应用程序只是注册脚本应该能够使用的函数,对象和方法,并且不再需要对代码进行任何操作。脚本引擎也可以使用内部应用程序使用的相同功能,从而无需复制功能。

     

对于脚本编写器,脚本语言遵循广为人知的C / C ++语法(稍作修改),但不需要担心指针和内存泄漏。

答案 5 :(得分:1)

最初的问题将Tcl描述为“T”。

Tcl从一开始就被设计为嵌入式脚本语言。它已经发展成为一种独一无二的动态语言,但仍然在全世界被用作嵌入式语言。它可以在BSD许可下使用,因此它可以免费获得。它也适用于任何现代平台,许多不那么现代。它不仅适用于桌面系统,还有适用于移动平台的变体。

Tcl擅长“胶水”语言,您可以在C语言中编写性能密集型函数,同时仍然可以从脚本语言的优势中获益,从而降低应用程序性能关键部分的性能。

Tcl还附带了一流的GUI工具包(Tk),可以说是最简单的跨平台GUI工具包之一。它还与SQLite和其他数据库非常接口,并且已经在很长一段时间内内置了对unicode的支持。

如果脚本界面可供您的客户使用(而不是简单地让您自己的工程师在脚本级别工作),Tcl非常容易学习,因为总共只有12条规则可以管理整个语言(截至tcl 8.6)。事实上,Tcl作为一种发明领域特定语言的方式,通常是如何用作最终用户脚本解决方案。

答案 6 :(得分:0)

已经提出了一些很好的建议,但我只想提一下,Perl也可以调用/可以调用C / C ++。

答案 7 :(得分:0)

您可能可以使用任何现代脚本/字节码语言。

如果您愿意忍受新产品日益增长的痛苦,可以使用Parrot VM。它支持许多(如果不是全部)此页面上列出的语言。不幸的是,它还没有完成,但这并没有阻止一些人在生产环境中使用它。

答案 8 :(得分:0)

我认为大多数人可能会提到他们最熟悉的脚本语言。从我的角度来看,Tcl专门设计用于与C接口,因此您的问题域是为该语言量身定制的。但是,我确信Python,Perl或Lua会没问题。您应该选择当前团队最熟悉的语言,因为这会缩短学习时间。