现有代码库中支持哪种脚本语言?
我正在考虑将脚本功能添加到现有代码库中,并权衡各种程序包的优缺点。 Lua可能是最明显的选择,但是我想知道人们是否根据他们的经验提出了其他建议。
脚本将在某些事件时触发,并且可能会驻留一段时间。例如,在启动时,脚本可以定义几个选项,程序将这些选项作为多个按钮呈现给用户。选择这些按钮之一后,程序将通知脚本可能发生进一步事件的位置。
这些是唯一的实际要求;
- 必须是可从源代码编译的跨平台库
- 脚本必须能够调用已注册的代码端函数
- 代码必须能够调用脚本端功能
- 在C / C ++代码库中使用。
解决方案
回答
我和蜘蛛猴玩了一些。看来情况至少值得一看。我也听说过有关Lua的好消息。使用javascript脚本语言的一个主要论点是,许多开发人员已经知道了它,并且一开始可能会感到更自在,而Lua最有可能会有所学习。
我并不完全肯定,但我认为蜘蛛猴是4个要求。
回答
我已经为此目的广泛使用了Python,并且从未后悔过。
回答
根据我自己的经验:
- Python。恕我直言,这是一个不错的选择。我们的代码库很大,有很多用户,他们非常喜欢。
- 红宝石。有一些非常不错的应用程序(例如Google Sketchup)使用了此功能。我写了一个Sketchup插件,并认为它非常不错。
- Tcl。这是首选的可嵌入的老式脚本语言,但是最近它发展势头不大。但是它是高质量的,他们在哈勃太空望远镜上使用它!
- a我只是用它做过婴儿用品,但是IIRC它只有浮点数字类型,因此请确保对要使用的数据没有问题。
我们很幸运地生活在脚本编写的黄金时代,因此,如果我们从任何一种流行的脚本中进行选择,就很难做出一个错误的选择。
回答
Lua是最简单的C API,用于绑定到我曾经使用过的代码库中。实际上,我通常会手动快速滚动绑定。鉴于,如果没有像swig这样的其他发电机,我们通常不会考虑这样做。而且,它通常比替代方法更快,更轻巧,并且协程是很少有其他语言提供的非常有用的功能。
回答
天使脚本
lets you call standard C functions and C++ methods with no need for proxy functions. The application simply registers the functions, objects, and methods that the scripts should be able to work with and nothing more has to be done with your code. The same functions used by the application internally can also be used by the scripting engine, which eliminates the need to duplicate functionality. For the script writer the scripting language follows the widely known syntax of C/C++ (with minor changes), but without the need to worry about pointers and memory leaks.
回答
已经有一些很棒的建议,但是我只想提及Perl也可以被称为/可以被称为C / C ++。
回答
我们可能可以使用任何现代脚本/字节码语言。
如果我们愿意忍受新产品不断发展的烦恼,则可以使用Parrot VM。它支持此页面上列出的许多(如果不是全部)语言。不幸的是,它尚未完成,但是并没有阻止某些人在生产环境中使用它。
回答
原始问题将Tcl描述为" T"。
Tcl从一开始就被设计为嵌入式脚本语言。它本身已发展成为一流的动态语言,但在全世界仍被用作嵌入式语言。它可在BSD许可下获得,因此它几乎是免费的。它也几乎可以在任何现代平台上编译,并且很多都不是现代的。它不仅可以在台式机系统上运行,而且可以用于移动平台。
Tcl作为一种"胶合剂"语言而出类拔萃,我们可以在其中用C编写性能密集型函数,同时仍然可以受益于脚本语言的优势,从而降低了应用程序对性能的要求不高。
Tcl还带有一流的GUI工具包(Tk),可以说是最简单的跨平台GUI工具包之一。它与SQLite和其他数据库的接口也非常好,并且已经对Unicode进行了内置支持。
如果将脚本界面提供给客户(而不是仅仅让我们自己的工程师在脚本级别工作),那么Tcl非常容易学习,因为总共只有12条规则可以控制整个语言(的tcl 8.6)。实际上,Tcl闪耀出一种发明领域特定语言的方式,这通常是它被用作最终用户脚本解决方案的方式。
回答
我认为大多数人可能会提到他们最熟悉的脚本语言。从我的角度来看,Tcl是专门为与C接口而设计的,因此问题域是针对该语言量身定制的。但是,我确信Python,Perl或者Lua会很好。我们可能应该选择当前团队最熟悉的语言,因为这样可以减少学习时间。