每当我看到Lua,我唯一读到的是“嵌入式非常好”,“速度快”,“轻量级”等等,最常见的是“魔兽世界”或简称“WoW”。
为什么它只限于将整个东西嵌入到另一个应用程序中?为什么不能像Python或Perl一样编写通用脚本呢?
Lua在速度和内存使用等方面表现出色(据我所知是最快的脚本语言),那么为什么我从来没有看到Lua被用作“桌面脚本语言”来自动化任务呢?例如:
- 重命名一堆文件
- 从网上下载一些文件
- 网页抓取
是标准库的缺乏吗?
每当我看到Lua,我唯一读到的是“嵌入式非常好”,“速度快”,“轻量级”等等,最常见的是“魔兽世界”或简称“WoW”。
为什么它只限于将整个东西嵌入到另一个应用程序中?为什么不能像Python或Perl一样编写通用脚本呢?
Lua在速度和内存使用等方面表现出色(据我所知是最快的脚本语言),那么为什么我从来没有看到Lua被用作“桌面脚本语言”来自动化任务呢?例如:
是标准库的缺乏吗?
根据我的网页抓取经验,我选择使用Twisted作为网络I/O和lxml作为html解析的后端 来编写我的网页抓取程序。我已经写了一篇文章介绍这项技术。
从网站获取数据的最佳选择:Python + Twisted + lxml
希望这对你有所帮助。
仅仅因为某种程度上它被“推广”为嵌入式脚本引擎的特殊用途语言,并不意味着它局限于此。实际上,WoW 可以同样选择 Python 作为他们的嵌入式脚本语言。
这可能是因为Lua被设计为一种脚本和扩展语言。在官方网站上,它被描述为一种强大、快速、轻巧、可嵌入的脚本语言。虽然你可以编写通用程序(如果我没记错的话,它带有解释器和编译器),但语言设计者主要意图让它作为嵌入式语言使用(因此它是轻量级的)。
osutil
的 os.quote
、os.runf
、os.capture
以及也许是 os.execve
中。通配符匹配在 posixutil.lua
中。它们都使用了 Luiz Henrique de Figuereido 的 Lua Posix 库。)显然,缺乏标准库。相比Python、Perl或Ruby,它的知名度较低。
缺乏标准库。这是事实。即使只是列出目录中的所有文件,也需要一个非标准模块。
虽然这样做有很好的理由(保持严格的ANSI可移植性,不要求POSIX),但对于一般编程来说,我更喜欢Python。
luatex
二进制文件,在所有平台上都可用,也可以作为Lua解释器使用(添加了一些重要模块 - slnunicode、luafilesystem等)。这对于先前依赖其他Unix脚本工具(ActivePerl等)的Windows安装非常重要。现在,ConTeXt宏语言广泛使用Lua脚本。这显然是一个非常特殊的领域,但与游戏完全无关!