Lua作为通用脚本语言?
每次提到Lua,我看到的描述总是“适合嵌入”、“速度快”、“占用资源少”,还有就是“魔兽世界”,简称“WoW”。
为什么Lua总是被用来嵌入到其他应用程序里呢?为什么不可以像Python或Perl那样写一些通用的脚本呢?
听说Lua在速度和内存使用方面表现得很好(据我所知,它是最快的脚本语言),那么为什么我从来没有看到Lua被用作“桌面脚本语言”来自动化一些任务呢?比如:
- 重命名一堆文件
- 从网上下载一些文件
- 网页数据抓取
是不是因为缺少标准库的原因呢?
11 个回答
Lua是一种很酷的编程语言,轻量级且速度非常快!
但关键是:你提到的那些任务,性能真的那么重要吗?
- 重命名一堆文件
- 从网上下载一些文件
- 网页抓取
你写这些程序可能只会写一次,也许只运行一次。为什么你对一个只运行一次的程序那么在意性能呢?
举个例子:
- 用C/C++写一个程序,花3个小时,处理一次数据,程序运行需要1小时。
- 用Python写一个程序,花30分钟,处理一次数据,程序运行需要10小时。
如果你选择第一个,你节省了程序运行的时间,但你花了时间去开发这个程序。
另一方面,如果你选择第二个,你浪费了程序运行的时间,但在程序运行的时候你可以做其他事情。比如玩《魔兽世界》,用你的术士去打怪!吃我一发D.O.T! :P
就是这样!虽然Lua写起来不难,但Lua的一切都是为了高效设计的。而且,Lua的模块很少,但Python的模块非常多。你不会想为了一个只运行一次的程序去移植一个C库到Lua吧?相反,选择Python,利用那些模块轻松完成任务可能是个更好的主意。
顺便说一下:其实我尝试过用Lua进行网页抓取,但最后我意识到我不需要那么在意语言的性能。网页抓取的瓶颈不在于语言的性能。瓶颈在于网络输入输出、HTML解析和多任务处理。我只需要确保程序能正常工作,找到瓶颈就行。最后,我选择了Python而不是Lua。Python有很多优秀的模块,我没有理由自己去写。
根据我在网页抓取方面的经验,我选择了Twisted作为网络输入输出,lxml作为HTML解析,作为我的网页抓取程序的后端。我写了一篇文章介绍这项技术。
从网站抓取数据的最佳选择:Python + Twisted + lxml
希望这对你有帮助。
虽然它被宣传为一种专门用于嵌入式脚本引擎的语言,但这并不意味着它只能用于这个目的。实际上,魔兽世界(WoW)完全可以选择Python作为他们的嵌入式脚本语言。