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

Scripting 在现有代码库中支持哪种脚本语言?,scripting,data-driven,Scripting,Data Driven,我正在考虑将脚本功能添加到现有的代码库中,并权衡各种软件包的优缺点。Lua可能是最明显的选择,但我想知道根据他们的经验,人们是否还有其他建议 脚本将在某些事件时触发,并可能在一段时间内保持驻留状态。例如,在启动时,脚本可以定义程序以多个按钮的形式呈现给用户的几个选项。选择其中一个按钮后,程序将通知脚本可能发生的进一步事件 这是唯一真正的要求 必须是可从源代码编译的跨平台库 脚本必须能够调用已注册的代码端函数 代码必须能够调用脚本端函数 可以在C/C++代码库中使用 我和他玩了一会儿。在你的情况下

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

脚本将在某些事件时触发,并可能在一段时间内保持驻留状态。例如,在启动时,脚本可以定义程序以多个按钮的形式呈现给用户的几个选项。选择其中一个按钮后,程序将通知脚本可能发生的进一步事件

这是唯一真正的要求

  • 必须是可从源代码编译的跨平台库
  • 脚本必须能够调用已注册的代码端函数
  • 代码必须能够调用脚本端函数
  • 可以在C/C++代码库中使用

  • 我和他玩了一会儿。在你的情况下,这似乎至少值得一看。我也听说了Lua的好消息。使用javascript脚本语言的主要理由是,许多开发人员已经知道它,并且从一开始可能会更舒服,而Lua很可能会有一点学习曲线


    我不是完全肯定,但我认为spidermonkey可以满足您的4个要求

    为此,我广泛使用Python,从未后悔过。

    根据我自己的经验:

    • 蟒蛇。我觉得这是个不错的选择。我们有一个相当大的代码库,有很多用户,他们非常喜欢它
    • 鲁比。有一些非常好的应用程序,比如谷歌Sketchup,使用了这个。我写了一个Sketchup插件,觉得很不错
    • Tcl。这是一种老式的可嵌入脚本语言,但现在没有太多动力。但是它的质量很高,他们在哈勃太空望远镜上使用它
    • 卢阿。我只对它做过一些小动作,但IIRC它只有一个浮点数字类型,所以请确保这对您将要处理的数据没有问题

    我们很幸运地生活在脚本编写的黄金时代,因此,如果您选择任何一种流行的脚本编写方式,就很难做出错误的选择。

    Lua is拥有最直接的C API,可以绑定到我使用过的代码库中。事实上,我通常会很快用手把装订好。然而,如果没有其他人的发电机,你通常不会考虑这样做。此外,它通常比其他语言更快、更轻,并且是很少有其他语言提供的非常有用的功能。

    允许调用标准C函数和C++方法,不需要代理函数。应用程序只需注册脚本应该能够使用的函数、对象和方法,而无需对代码执行更多操作。脚本引擎也可以使用应用程序内部使用的相同功能,这样就不需要复制功能

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


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

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


    如果你愿意忍受新产品的成长痛苦,你可以使用虚拟机。它支持本页列出的许多语言(如果不是所有语言的话)。不幸的是,它还没有完成,但这并没有阻止一些人在生产环境中使用它。

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

    Tcl从一开始就被设计成一种嵌入式脚本语言。它本身已经发展成为一种一流的动态语言,但仍然作为一种嵌入语言在世界各地使用。它在BSD许可证下可用,因此它几乎是免费的。它也可以在几乎所有的moden平台上编译,而且很多平台都不太现代。而且它不仅适用于桌面系统,还可用于移动平台

    Tcl是一种优秀的“粘合”语言,在这种语言中,您可以用C编写性能密集型函数,同时仍然可以从脚本语言的优势中获益,以实现应用程序性能要求较低的部分

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


    如果您的客户可以使用脚本界面(而不是简单地让您自己的工程师在脚本级别工作),那么Tcl非常容易学习,因为总共只有12条规则管理整个语言(从Tcl 8.6开始)。事实上,Tcl在发明领域特定语言方面大放异彩,而这正是它作为最终用户脚本解决方案的常用方式。

    我认为大多数人可能都提到了他们最熟悉的脚本语言。在我看来,Tcl是专门为与C接口而设计的,因此您的问题域是为该语言量身定做的。但是,我相信Python、Perl或Lua都可以。您可能应该选择当前团队最熟悉的语言,因为这将减少学习时间