为什么我选择Lua?

开发 开发工具
Lua是一个小众产品,而什么本文中作者会选择Lua语言呢?作者认为Lua语言的7点优势足够让他认为Lua确实是一门非常简单并强大的语言。下面就让我们详细的了解下吧。

在这篇文章中,我将向你解释为什么要使用Lua。我写这篇文章最初的动机是由于Lua邮件列表中的一则消息 “why isn't Lua more widely used?” 。针对这个消息的回复各种各样,有的说是因为缺少类库,而我更赞同另外一个观点,那就是大部分人都不喜欢自己动手 (do it yourself)的方式来解决问题。我常常把Lua比作Arch Linux。这也就注定了Lua是一个小众产品。下面我将列出几条为什么我要使用Lua的理由:

1. 可以和 C/C++ 集成

我的编程经历不长,但是我已经使用过很多种语言了,包括Lisp,Scheme,Python,Perl,Bash,VBA,SQL等等。但是它们没有一个可以像Lua那样可以和C混着使用。C语言的API非常的干净和直观,你花一个下午的时间就可以上手了。如果你对这个感兴趣的话,你可以看看“PIL's section on the C API” 。

为什么这个特性很重要呢?首先,如果你有现成的C/C++类库的话,你可以很容易的在Lua中调用这些API。或者你也可以写一个脚本让Lua在C中执行。这也意味着Lua的程序不会有速度问题。如果你还是觉得Lua不够快的话,你可以用C完全重写这段代码。虽然别的语言的程序也可以用C重写,但是我还没有发现谁能比Lua更方便的做到这一点。

2. 快速、简洁

相比于其他语言,Lua的实现是非常高效的。也许是因为Lua使用的是“基于寄存器的虚拟机” 而不是基于堆栈的虚拟机。或者说使用Lua的开发者都非常的牛逼。不管怎样,你几乎不需要顾虑Lua代码的性能问题。

但是如果你对性能还是不满意的话,你可以尝试使用LuaJIT:
“LuaJIT是公认的运行最快的动态语言的实现,并且对内存的使用少,虚拟机占用低于125K,JIT编译器占用不到85K (在x86环境中)。”
LuaJIT可以几乎和C代码饿速度媲美。不管怎样,如果你还是对速度不满意的话,你可以试试我在***点中提出的建议。

3. 教育作用

虽然这不是一个编程语言的功能,但是我发现使用Lua让我对计算机科学的整体了解有所提高。比如说,这篇文章是关于 Lua 5.0 的实现的,让我对虚拟机是如何实现的有了一个了解。阅读源代码让我大开眼界。我认为这一切都得益于Lua有条不紊的改进

4. 函数式编程

Lua提供了函数式编程的架构,让编程更加的有趣。例如 anonymous functions, higher order functions, lexical closures,proper tail calls等等。这些特性不是语言的一些语法糖,而是Lua从底层就整合了这些特性。比如说,Lua的每一个方法都是一个值(比如数字2,或者字符串“ktr”),也就意味着每一个方法都是匿名的。你只要给它取个名字,然后你就可以调用它了。你可以给print重新赋值:
print = math.sin
你可以利用这个功能创建沙箱。如果print是一个危险的操作,你可以替换成你自己的print方法或者从全局中删除这个方法。

5. 任何东西都是一张表

在Lua中,任何一个变量类型都是一张表,例如Array,Hash,“module”或者全局变量等等。也就是说你可以“require”一些模块(类似Python的import语句)并且把结果当错table来处理。在Python中,你可以 __import__('...') 一些模块,然后返回值的变量就可以通过类似 var(module) 的方式来访问。在Lua中,你可以通过 module[var] 的方式来访问模块中的变量。我这里提到Python是为了强调不同之处,说明Lua更容易使用。

这也让你学习Lua的语法更加快速。你不用担心list和dictionary、package有什么不同。

6. 一致性

不知你是否意识到,Lua是非常一致的语言。它的很多功能都是做的恰到好处。比如说,Lua没有“for”循环直到Lua 4.0,也就是Lua语言发布7年以后。这是因为while循环更为通用,而且语法更简洁。Lua的开发团队相对来说比较保守,他们不接受patch,所以Lua的进化比较缓慢,但是比较平稳。你知道所有的功能都是有规划的在进行,也就意味着你不能指望你所期待的功能可以被很快的实现。

7. 可移植性

关于这一点我不会讲很多细节,但是Lua基本上可以在任何环境中运行。Lua的代码是按照“Clean ANSI C”的标准编写的,所以如果你有一个C的运行环境,你就可以运行Lua。

总结:Lua是一门非常简单但是强大的语言。

原文链接:http://www.oschina.net/news/26081/why-i-choose-lua

【编辑推荐】

  1. 编程语言新宠儿:Julia诞生记
  2. 当下主流JVM语言一览
  3. Lua开发工具脱离Eclipse 成为独立版本
  4. 菜鸟入门Java语言学习的要点
  5. 流行的编程语言之战
责任编辑:林师授 来源: 开源中国社区
相关推荐

2013-10-22 15:18:19

2012-11-14 20:55:07

容错服务器选型CIO

2021-04-06 11:07:02

字节跳动组织架构

2021-02-01 07:20:51

KafkaPulsar搜索

2019-04-19 11:56:48

框架AI开发

2018-12-21 11:26:49

MySQLMongoDB数据库

2012-10-10 16:52:21

CentOSDebianUbuntu

2011-11-28 10:21:52

Nginx特性

2012-01-05 10:14:24

诺基亚联手微软

2021-03-15 07:43:17

腾讯工作事业

2020-08-14 10:40:35

RestTemplatRetrofitJava

2009-12-21 17:11:38

Linux认证

2015-10-14 18:25:03

一体化架构设计微服务

2009-06-25 15:09:34

选择JSFESRI

2020-07-17 14:06:36

Scrum敏捷团队

2012-04-04 22:07:12

Android

2023-02-26 01:25:23

Sanic框架工具

2020-06-10 09:06:48

MongoDB架构高可用

2017-02-27 15:19:04

2016-08-19 16:27:52

数据库Mongo DB开发
点赞
收藏

51CTO技术栈公众号