当前位置:  开发笔记 > 编程语言 > 正文

Lua作为通用脚本语言?

如何解决《Lua作为通用脚本语言?》经验,为你挑选了7个好方法。

当我看到Lua时,我唯一能读到的东西是"非常适合嵌入","快速","轻量级"以及更多的其他内容:"魔兽世界"或简称"魔兽世界".

为什么仅限于将整个内容嵌入到另一个应用程序中?为什么不像使用Python或Perl一样编写通用脚本?

Lua似乎在速度和内存使用方面做得很好(最快的脚本语言),为什么我从未将Lua用作"桌面脚本语言"来自动执行任务?例如:

重命名一堆文件

从网上下载一些文件

Webscraping

是缺少标准库吗?



1> Fang-Pen Lin..:

Lua是一种很酷的语言,重量轻,速度极快!

但问题是:对于你提到的那些任务,性能是否如此重要?

重命名一堆文件

从网上下载一些文件

Webscraping

你可以编写一次这些程序,也可以运行一次.为什么你一直关心一次运行程序的性能?

例如:

    花费3个小时写一个C/C++程序,处理一次数据,程序需要1个小时才能运行.

    成本30分钟编写一个Python程序来处理数据一次,该程序将需要10个小时才能运行.

如果您选择第一个,则可以节省运行程序的时间,但是您需要花费时间来开发程序.

另一方面,如果选择第二个,则浪费时间运行程序,但在程序运行时可以执行其他操作.如何玩魔兽世界,用你的术士杀死怪物?吃我的DOT!:P

而已!虽然Lua写起来并不那么难,但Lua的一切都是为了高效而设计的.而且,Lua的模块很少,但是Python有很多模块.你不想只为一次运行程序移植Lua的C库,对吗?相反,选择Python并使用这些模块轻松实现您的任务可能是一个更好的主意.

仅供参考:实际上,我曾尝试使用Lua进行网页编写,但最后,我意识到我不必太在乎语言表现.webscraping的瓶颈不在于语言的表现.瓶颈在于网络I/O,HTML解析和多任务处理.我所要做的就是确保程序正常运行并找到瓶颈.最后,我选择了Python而不是Lua.有很多优秀的Python模块; 我没有理由建立自己的.

根据我对webscraping的经验,我选择了Twisted for network I/O和lxml for html parsing作为我的webscraping程序的后端.我写过一篇文章介绍这项技术.

从网站获取数据的最佳选择:Python + Twisted + lxml

希望这是有帮助的.


很好的答案,虽然我正在考虑你可能想出的疯狂的一次性使用方案,它在Python中比在C中运行速度慢10倍......这些一次性脚本中的大多数往往受到磁盘的限制无论如何.

2> Sébastien Ro..:

Lua的库比Python少.但一定要看看LuaForge.它有很多有趣的库,比如LuaCURL,wxLua或getopt.

然后,访问Lua的包管理系统LuaRocks.有了它,您可以搜索和安装具有依赖性的大多数成熟的Lua模块.感觉就像RubyGems或aptitude.

网站lua-users.org也有很多有趣的资源,比如教程或Lua Wiki.

我喜欢Lua不是它的速度,它是最小的核心语言,灵活性和可扩展性.

也就是说,我可能会将Python用于您提到的任务,因为较大的社区在Python中执行此类操作.



3> JesperE..:

仅仅因为它作为嵌入式脚本引擎的专用语言"在市场上销售"(在一般意义上)并不意味着它仅限于此.实际上,WoW可能也选择Python作为嵌入式脚本语言.


我不认为Python会是一个很好的选择.Lua和Python之间用于嵌入的区别在于,Lua的语义旨在最大限度地减少与其他代码一起工作的问题,而Python通常认为​​它是控件.

4> Firas Assaad..:

这可能是因为Lua被设计为脚本和扩展语言.在官方网站上,它被描述为一种功能强大,快速,轻量级,可嵌入的脚本语言.没有什么能阻止你为它编写通用程序(如果我没记错的话,它附带了解释器和编译器),但语言设计者希望它主要用作嵌入式语言(因此重量轻,所有)



5> Norman Ramse..:

这是一个社会学问题,而不是编程问题.

我几乎只使用Lua进行通用脚本编写.但是我不得不写几百行代码,以便Lua能够更好地使用shell.这包括这样的技巧

引用一个字符串,以便它被shell看作一个单词

编写一个函数来捕获命令的输出,如shell $(command)

编写一个函数来使用Lua posix库对文件系统进行爬网并展开shell globbing模式

(对于那些谁可能有兴趣,我已经离开了代码在我的Lua中投递箱,其中还包含一些其他的东西.有趣的东西可能是osutilos.quote,os.runf,os.capture,也许os.execve,文件名匹配是posixutil.lua,他们都使用路易斯恩里克德de Figuereido的Lua Posix图书馆.)

对我来说,额外的努力是值得的,因为我可以处理简单的语法和伟大的数据结构.对于其他人,可能更喜欢与shell更直接的连接.



6> uroc..:

绝对缺乏标准库.它也比Python,Perl或Ruby鲜为人知.



7> RBerteig..:

最近有人推动在Windows上为Lua安装电池.结果可以在LuaForge 的Lua for Windows项目中找到.它包括解释器和大量额外模块,允许编写和使用开箱即用的有用脚本和应用程序.

我知道各种Linux发行版现在包括Lua和一些模块,还有更多.

在邮件列表中还有一些正在讨论的模块库,但社区还没有将其作为"官方"机制.

我使用Lua作为脚本语言和我的典型应用程序的"主"循环,由一个或多个DLL支持,这些DLL包含在C中更好地实现的代码,或者包装特定项目所需的现有库或API函数.与IUP或wxLua(用于wxWindows的Lua绑定)等GUI工具包一起使用时,Lua使编写中小型GUI应用程序非常愉快.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有