6

在我看来,Lua 基本上是一种普通的脚本语言,与 PHP、Python 或 Ruby 没有太大的区别,这些语言都比较有名

但另一方面,有很多项目(例如很棒的窗口管理器)需要在 Lua 中进行配置和/或插件。因此,我认为应该有一些理由让这种通常不为人知的语言成为众多有才华的开发人员最喜欢的选择。你能说出一些吗?

你从使用/学习 Lua 中获得了什么?

4

2 回答 2

7

Lua 的主要目标是编写脚本和扩展用 C 编写的托管应用程序。虽然它已经成为强大的独立语言,但它保留了易于嵌入应用程序的特性作为主要特性。

据我了解它的历史,PHP 的出现是因为需要有更简单的方法来编写 Web 应用程序。虽然它可以独立于 Web 服务器使用,但这种使用并不常见。

Python 和 Ruby(与 Perl 一样)最初是具有特定设计目标的独立语言。虽然可以将 Python 解释器嵌入到更大的应用程序中,但这并不是早期对其用户社区很重要的功能。今天,Python 比 Perl 更容易嵌入到应用程序中,但两者都作为构建从小型脚本到功能齐全的 GUI 应用程序的框架而大放异彩。

Ruby(也与 Perl 类似)在 Web 应用程序领域获得了很多可见性,原因可能是 Rails 框架。虽然我不能从个人经验中对 Ruby 说太多,但它经常在Tiobe 指数中名列前茅。我的(有限的)理解是,将 Ruby 解释器嵌入到更大的应用程序中并不是早期的设计目标,但可以做到,并且显然甚至得到了更新版本的支持。刚才在 SO 关于嵌入 Ruby 的问题的快速浏览似乎产生了“不要那样做,使用 Lua 代替”与“有可能,去做”平衡的共识。

Perl 无疑是​​最出名的一种独立脚本语言,它早于现代网络。随着 CGI 的发展,Perl 在那里找到了归宿,这要归功于被解释,这使得在 Perl 中编写 CGI 脚本以在具有有限(或没有)命令行访问权限的商业托管 Web 服务器上运行实际上是可行的。虽然使用 C 编写的库代码来扩展 Perl 是可能的(现在甚至相当容易),但在应用程序中嵌入 Perl 解释器从来都不是一件容易的事。我在 Perl 社区边缘多年的感觉始终是嵌入从来都不是优先事项。

Lua 在强大的功能和简单的语法之间取得了很好的平衡。即使是非程序员也很容易阅读和修改 Lua 脚本。将其用作配置语言通常是迈向完全可编写脚本的应用程序的第一步。使用 Lua 在启动时解析并执行配置文件以获取程序设置非常简单。一旦该功能可用,将 Lua 核心用于其他任务就变得很容易(“它只是坐在那里”)。作为一个自然的发展过程,最终得到一个应用程序是由一层薄薄的 C 代码、C 中的核心“硬”功能、C 中的 UI 框架以及大部分用户体验用 Lua 编写的,这并不罕见。例如,Adobe Lightroom就是这样构建的。

整个 Lua 源工具包,包括参考手册和二进制发行版只需要 1 MB 左右的存储空间,这并没有什么坏处。(现在在我的 Windows 机器上,Lua 和它的 DLL 总计刚刚超过 200KB,而 Perl 和它的 DLL 的重量约为 1.7MB。对于大多数应用程序来说,这意味着添加一个 Lua 解释器会花费大约 200KB 的额外可执行文件大小。 )

要考虑的另一个因素可能是许可证。像许多成功的脚本语言一样,Lua 是开源的。但是,它是根据明确允许商业用途的简单易懂的MIT 许可证获得许可的。虽然在 GPL(或更可能是 LGPL)下发布的产品可以进入商业环境,但它给律师带来了更多的麻烦。一个简单的许可证,例如适用于 Lua 的许可证,很容易让您的法律部门同意。因此,Lua 被用于一些重要的商业产品中,并且这些产品的开发团队已经在 Lua 语言社区中可见。

编辑:由于评论指出它在 Rails 框架之前更丰富的历史,我已经修改了我对 Ruby 的讨论。这提供了一个借口来给 Perl 自己的段落,并用具体的测量来吹嘘 Lua 的大小。是的,我确实喜欢 Lua。很多。

于 2013-03-08T23:06:23.577 回答
5

Lua 相对轻量级,旨在轻松嵌入(并与之交互)应用程序。这通常使它成为比设计为独立运行并创建自己的整个小世界的重型语言更好的选择。

于 2013-03-08T16:16:58.477 回答