当我看到Lua时,我唯一能读到的东西是“非常适合嵌入”,“快速”,“轻量级”以及其他任何东西:“魔兽世界”或简称“魔兽世界”。
为什么仅限于将整个内容嵌入到另一个应用程序中?为什么不像使用Python或Perl一样编写通用脚本?
Lua似乎在速度和内存使用方面做得很好(最快的脚本语言),为什么我从未将Lua用作“桌面脚本语言”来自动执行任务?例如:
缺少标准库吗?
答案 0 :(得分:36)
Lua是一种很酷的语言,重量轻,速度极快!
但重点是:性能对于那些人来说如此重要 你提到的任务?
您可以编写一次这些程序,也可以运行一次。 你为什么一直关心一次运行程序的性能?
例如:
如果选择第一个,则节省运行程序的时间, 但是你花了你的时间来开发这个程序。
另一方面,如果选择第二个,则浪费时间运行 程序,但你可以在程序时做其他事情 运行。 如何玩魔兽世界,杀死怪物 和你的术士?吃我的D.O.T ! :P
就是这样!虽然Lua写起来并不那么难,但Lua的一切都是为了高效而设计的。而且,Lua的模块很少,但是有很多模块可供Python使用。你不想只为一次运行程序移植Lua的C库,对吗?相反,选择Python并使用这些模块轻松实现您的任务可能是一个更好的主意。
仅供参考:实际上,我曾尝试使用Lua进行网页编写, 但最后,我意识到我不必太在乎语言表现。 webscraping的瓶颈是 不是语言的表现。瓶颈已经开启 网络I / O,HTML解析和多任务处理。我只需要做 确保程序正常运行并找到瓶颈。 最后,我选择了Python而不是Lua。有这样的 许多优秀的Python模块;我没有理由建立我的 自己的。
根据我对网页编写的经验,我选择了 扭曲为网络I / O和lxml,用于html解析作为后端 我的webscraping程序。我写过一篇文章介绍这项技术。
The best choice to grab data from websites: Python + Twisted + lxml
希望这有用。
答案 1 :(得分:23)
Lua的库比Python少。但请务必查看LuaForge。它有很多有趣的库,比如LuaCURL,wxLua或getopt。
然后,访问Lua的包管理系统LuaRocks。有了它,您可以搜索和安装具有依赖性的大多数成熟的Lua模块。感觉就像RubyGems或aptitude。
网站lua-users.org也有很多有趣的资源,例如教程或Lua Wiki。
我喜欢Lua不是它的速度,它是最小的核心语言,灵活性和可扩展性。
那就是说,我可能会将Python用于你提到的任务,因为更大的社区在Python中做这些事情。
答案 2 :(得分:12)
仅仅因为它作为嵌入式脚本引擎的专用语言“在市场上销售”(在一般意义上)并不意味着它仅限于此。事实上,WoW可能也选择Python作为嵌入式脚本语言。
答案 3 :(得分:10)
这可能是因为Lua被设计为脚本和扩展语言。在official site上,它被描述为一种强大,快速,轻量级,可嵌入的脚本语言。没有什么可以阻止你为它编写通用程序(如果我没记错的话,它附带了解释器和编译器),但是语言设计者希望它主要用作嵌入式语言(因此重量轻而且全部)
答案 4 :(得分:9)
这是一个社会学问题,而非编程问题。
我几乎只使用Lua进行通用脚本编写。但是我不得不写几百行代码,以便Lua能够更好地使用shell。这包括
这样的技巧(对于那些可能感兴趣的人,我已将代码留在Lua drop box中,其中还包含其他一些内容。有趣的内容可能在osutil
os.quote
中, os.runf
,os.capture
,也许是os.execve
。全球范围在posixutil.lua
。他们都使用Luiz Henrique de Figuereido的Lua Posix library。)
对我来说,额外的努力是值得的,因为我可以处理简单的语法和优秀的数据结构。对于其他人来说,可能更喜欢与shell建立更直接的联系。
答案 5 :(得分:6)
绝对缺乏标准库。它也比Python,Perl或Ruby鲜为人知。
答案 6 :(得分:5)
最近有人推动在Windows上为Lua创建一个包含电池的电池。结果可以在LuaForge的Lua for Windows项目中找到。它包括解释器和大量额外模块,允许编写和使用开箱即用的有用脚本和应用程序。
我知道各种Linux发行版现在包括Lua和一些模块,还有更多。
邮件列表中还讨论了一些拟议的模块库,但社区还没有将其作为“官方”机制。
我使用Lua作为脚本语言和我的典型应用程序的“主要”循环,由一个或多个DLL支持,这些DLL包含在C中更好地实现的代码,或者包装一个所需的现有库或API函数。特别的项目。与GUI工具包(如IUP或wxLua(对wxWindows使用Lua绑定)一起使用时,Lua使编写中小型GUI应用程序非常愉快。
答案 7 :(得分:4)
我认为关于它是一个“营销”事物的答案可能是正确的,同时缺乏大量可供选择的库。我想指出另一个例子:Ruby。 Ruby是一种通用的脚本语言。问题是,由于Ruby on Rails已经变得如此受欢迎,因此很难找到与Rails无关的东西。我担心Lua也会受到这种影响,因为使用它的一些重要事情而受到欢迎,但却永远无法摆脱这种耻辱。
答案 8 :(得分:4)
缺乏标准库。期。即使列出目录中的所有文件也需要a non-standard module。
有充分的理由(保持严格的ANSI可移植性,不需要POSIX),但结果是,对于一般编程,我更喜欢Python。
答案 9 :(得分:4)
Lua在LuaTeX(TeX扩展)中用作嵌入式语言,并因此而在TeX开发人员中迅速普及。它被用作TeX Live发行版中某些实用程序的脚本语言,只是因为现在所有平台上都有一个luatex
二进制文件,它也可以用作Lua解释器(带有一些重要的模块)添加 - slnunicode,luafilesystem等)这对于Windows安装来说非常重要,它依赖于之前的其他Unix脚本工具(ActivePerl等)。现在,ConTeXt宏语言广泛使用Lua脚本。
这无疑是一个非常特殊的领域:-)但与游戏完全无关!
答案 10 :(得分:3)
为了使Lua易于嵌入,它必须具有很少的依赖性并且很小。这使得它不适合作为通用脚本语言。因为将它用作通用脚本语言需要许多标准库。但是如果Lua有很多标准库,那么嵌入就更难了(由于依赖性和内存占用。)