Joh*_*ohn 18 javascript ruby python windows lua
考虑以下要求:
我喜欢Python的可读性.我对Python的经验也比其他脚本语言更多.但是CPython不是多线程的,IronPython需要托管CLR和兼容的语言(C++/CLI或C#).
小智 12
Lua是最好的选择.Python,Ruby和JavaScript都是大语言,它们不是为嵌入而设计的.但Lua与众不同,旨在嵌入.
对于脚本语言,您应该比其他任何事情更多地考虑"限制".嵌入脚本可以轻松地用于黑客(坏意思).
例如,默认情况下Lua无法打印到控制台.据我所知,暴雪因此使用了Lua.
Uri*_*hen 11
我选择Lua而不是Python和JScript一直处于同样的两难境地.Lua最擅长的是使用像luabridge和luabind这样的库的C/C++代码.也就是说,你可以从C++调用lua并让脚本回调到C++而不会出现问题,从脚本中访问c ++数据,反之亦然.
像Python和Lua这样的语言的问题在于,语言在常规意义上并不是真正的多线程:如果一个C++线程使用语言脚本引擎来运行脚本,则不能使用相同的引擎来运行另一个脚本.两种语言都有一个引擎范围的锁,可以在这些情况下使用,以确保维持引擎的完整性.但是,这两种语言都是多线程的,因为您可以在后台运行函数并与您想要的任何同步对象进行交互(就像从C++中那样).所以我选择从C++和脚本代码创建的所有线程只在专用线程(每个引擎的线程)中运行,并以常规方式与应用程序中的其他线程交互.
如果你需要将数据和控制从C++传递到脚本,反之亦然,Lua比Python要好得多.除此之外,我不会在C++项目中托管CLR.太乱了.
您可以考虑嵌入一个流行的JavaScript引擎.它们不仅速度快,而且支持得很好,但是很多人都知道如何使用JavaScript进行编程,它将被大量读者轻松采用和阅读.
根据这个答案,SpiderMonkey引擎是线程安全的,而谷歌/ Chrome的V8可能不是.