脚本语言

7

我正在寻找一种好的脚本语言来链接到我的程序中。

我正在寻找两个重要属性:

  • 脚本语言应该被硬链接到可执行文件中(不需要第三方安装)。这对我很重要,可以简化分发。
  • 脚本应该允许某些运行时调试选项(在我的程序内运行脚本时,我希望能够在调试器中轻松运行它,同时在我的程序上下文中运行)

Python,Lua或其他编程语言是否能满足我的要求?


4
你应该提供更多关于你的程序的信息,例如使用的语言和目标操作系统。 - Anax
更重要的问题是你需要哪些库。 - Lothar
7个回答

13

Lua和Python都可以提供您所述的功能,因此选择其中之一将取决于其他标准。

Lua是一种更轻量级的解决方案,它将具有比Python更小的磁盘占用和可能更小的内存开销。对于某些用途,它可能更快。Python拥有更丰富的标准库,更成熟的第三方库和更具表现力的语言。

两者都已嵌入到主要应用程序中。Python可以在Blender、OpenOffice和文明4中找到。Lua可以在《魔兽世界》和Adobe Lightroom中找到。我建议查看每个教程以及嵌入它们到您的应用程序中的设施,并选择最适合您的思维方式的那个。


1
不幸的是,Python缺乏对“一个单一可执行文件”的链接的真正支持。DLL / so库不能轻松地进行静态编译和链接。 LUA通过根本没有严重的库来解决这个问题。 - Lothar
2
《文明5》出于性能考虑转向Lua。 - Jonas

9

Lua是为此而设计的:

  • 静态链接? 检查!
  • 调试? 检查!

7
通常情况下,Lua更适合嵌入到其他项目中。Python更适合作为一个独立的平台,因为它的库支持更加广泛。有关更多详细信息,请参见Lua Versus Python
就我个人而言,根据手头的工作不同,我经常使用这两种语言。我总是使用Lua来嵌入到C/C++应用程序或从C/C++共享库(即DLL)导入的脚本功能。对于不需要低级C/C++代码的独立任务,Python总是我的首选。

2
我会推荐Python。虽然我不是很了解细节,但计算机图形套件Blender在实现Python脚本方面做得非常好。
据我所知,在Blender 2.5中,解释器是从可执行文件内部运行的。
import sys
sys.executable

显示/blender/blender.exe,并且有良好的调试支持,甚至内置了完整的交互式解释器。

更多信息请查看:http://www.blender.org/


1

我非常喜欢Lua用于嵌入,但作为另一种选择,JavaScript在C、C++(SpiderMonkey和V8)和Java(Rhino)程序中很容易嵌入。


+1 确实,这是另一个可行的选择。我只建议在您或更准确地说是您的用户/脚本编写者可能已经了解它的情况下使用它。我在上面的答案中忘记提到的一件事是,除非您嵌入脚本引擎供自己使用,否则您应该考虑将使用脚本接口的人的偏好和需求。 - Simon Hibbs
Simon:我不确定我有多少同意这个观点。曾经有一段时间,每个人都说他们想要REXX作为扩展语言,但是我在过去的10年中没有看到一个使用REXX的程序。我不认识任何一个人会要求在编辑器中使用Lisp(即使是Lisp程序员!),但是现在看看Emacs。Javascript(大致上是“带有Java式语法的Scheme”)最初对于编写网页的典型人群来说难度很大,但是不知怎么的人们设法适应了。我认为,如果语言足够强大,并且用户想要黑客您的程序/平台,那么用户将会解决问题。 - Ken

1
除了已经提到的Tcl、Lua和Javascript之外,Guile是另一种专门为此设计的语言。

0
我会将Tcl加入其中。它被设计成可以轻松嵌入到其他程序中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接