Lua作为通用脚本语言?

39 投票
11 回答
13861 浏览
提问于 2025-04-11 17:45

每次提到Lua,我看到的描述总是“适合嵌入”、“速度快”、“占用资源少”,还有就是“魔兽世界”,简称“WoW”。

为什么Lua总是被用来嵌入到其他应用程序里呢?为什么不可以像Python或Perl那样写一些通用的脚本呢?

听说Lua在速度和内存使用方面表现得很好(据我所知,它是最快的脚本语言),那么为什么我从来没有看到Lua被用作“桌面脚本语言”来自动化一些任务呢?比如:

  • 重命名一堆文件
  • 从网上下载一些文件
  • 网页数据抓取

是不是因为缺少标准库的原因呢?

11 个回答

23

Lua的库比Python少一些。不过,你可以去看看LuaForge,那里有很多有趣的库,比如LuaCURLwxLuagetopt

接下来,去看看LuaRocks,这是Lua的包管理系统。通过它,你可以搜索和安装大多数成熟的Lua模块及其依赖。它的感觉就像RubyGems或者aptitude

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

我喜欢Lua的地方不是它的速度,而是它简洁的核心语言、灵活性和可扩展性。

不过,我可能会选择Python来完成你提到的任务,因为Python有更大的社区在做这些事情。

40

Lua是一种很酷的编程语言,轻量级且速度非常快!

但关键是:你提到的那些任务,性能真的那么重要吗?

  • 重命名一堆文件
  • 从网上下载一些文件
  • 网页抓取

你写这些程序可能只会写一次,也许只运行一次。为什么你对一个只运行一次的程序那么在意性能呢?

举个例子:

  1. 用C/C++写一个程序,花3个小时,处理一次数据,程序运行需要1小时。
  2. 用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

希望这对你有帮助。

12

虽然它被宣传为一种专门用于嵌入式脚本引擎的语言,但这并不意味着它只能用于这个目的。实际上,魔兽世界(WoW)完全可以选择Python作为他们的嵌入式脚本语言。

撰写回答