LUA快速使用指南

这里写图片描述
Lua在葡萄牙语中是月亮的意思,是一个有效的轻量级的可嵌入式脚本语言。它支持面向对象和面向过程的编程方式。从1993年被开发出来至今已经有25岁的高龄了。老当益壮,不坠青云之志,Lua仍然非常地活跃,比如深度学习的开源框架Torch就使用Lua和C作为开发的主要语言。

曾经在游戏开发者杂志的编程工具分类获得2011年的Front Line Award奖项,Lua得到了很高的评价:Lua成为了一们非常流行的编程语言,在游戏领域尤其如此。部分原因是由于它的速度和易用性,开发者可以将Lua嵌入到游戏引擎中。同时,Lua还有很高的可扩展性。另外在源码文件以及运行所需的内存使用量方面都是相对较小。游戏开发者杂志对Lua进行了不遗余力的赞美,详细可以参看如下链接:

URL http://www.gamasutra.com/view/news/129084/Announcing_Game_Developer_magazines_2011_Front_Line_Award_winners.php

基本信息

项目 说明
官方网站 http://www.lua.org/
开源/闭源 开源
License类别 MIT License
代码管理地址 http://www.lua.org/ftp/
开发语言 C
更新频度 平均每年数次更新
提供者 Waldemar, Roberto, Luiz
支持平台 使用ANSI C开发的Lua可以支持任何能够运行ANSI C的平台,基本常见的OS都可以从源码进行编译和安装
当前版本 5.3.4(2017/01/12)

Lua的开发者

这里写图片描述

版本演进

这里写图片描述

功能特色

相较于其他脚本余元,Lua有显著的自身特色:

快速

官方号称Lua在性能方面有较好的名声,而其他编程语言也有强烈的愿望能够”as fast as Lua”, 据称在一些对标中Lua都在交互式的脚本语言中是最快的。

可移植

由于Lua使用了ANSI C的开发,而几乎所有的操作系统对ANSI C提供支持,所以Lua可以运行在Unix/Windows/IBM大型机/诸如Android,iOS,Symbian等移动设备上。

可嵌入

Lua提供简单而强大的API方便集成到其他语言中,可以使用其他语言写的库对Lua进行扩展,同时也可以使用其他语言和Lua一起对应用程序进行更好地扩展。Lua不仅仅支持C/C++,同时对Java/C#/Perl/Ruby/Smalltalk/Ada/Fortran/Erlang等进行结合使用。

强大且简单

在特性开发上Lua秉承所谓的meta-mechanisms的重要设计理念,通过这种方式实现了很多重要的功能,比如Lua虽然不是纯粹的面向对象语言,但是通过meta-mechanisms机制可以实现类和继承。

small

最新的5.3.4的tar包,压缩之后只有297K,而解压后也仅有1.1M。Lua的源码仅有24000行左右,在64位的Linux下,Lua的解释器和标准库也仅有几百K的大小。

免费

Lua采用了对商业非常友好的MIT License,可用于商业目的,你所需要的只是下载下来。

安装部署

在本文中使用源码编译的方式进行Lua的安装

事前准备:yum install -y gcc readline-devel

使用gcc是为了编译,而readline-devel则是因为在Lua的源码中使用了相关模块

[root@devops lua-5.3.4]# find . -type f |xargs grep readline.h
./src/lua.c:#include <readline/readline.h>
./src/lua.c:#include <readline/history.h>
[root@devops lua-5.3.4]# 

具体5.3.4的源码安装命令如下:

curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxf lua-5.3.4.tar.gz
cd lua-5.3.4
make linux test

安装日志:

[root@devops ~]# curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
...省略
[root@devops ~]# tar zxf lua-5.3.4.tar.gz
[root@devops ~]# cd lua-5.3.4
[root@devops lua-5.3.4]# make linux test
cd src && make linux
make[1]: Entering directory `/root/lua-5.3.4/src'
make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
make[2]: Entering directory `/root/lua-5.3.4/src'
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o lapi.o lapi.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o lcode.o lcode.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o lctype.o lctype.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o ldebug.o ldebug.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX    -c -o ldo.o ldo.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT
  • 14
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
快速排序是一种高效的排序算法,它的基本思想是通过一次排序将数组分成两个子数组,其中一个子数组的所有元素都比另一个子数组的所有元素小,然后再分别对这两个子数组递归地进行快速排序。 以下是使用Lua语言实现快速排序的示例代码: ``` function quickSort(arr, left, right) left = left or 1 right = right or #arr if left >= right then return end local pivotIndex = partition(arr, left, right) quickSort(arr, left, pivotIndex - 1) quickSort(arr, pivotIndex + 1, right) end function partition(arr, left, right) local pivot = arr[right] local i = left - 1 for j = left, right - 1 do if arr[j] < pivot then i = i + 1 arr[i], arr[j] = arr[j], arr[i] end end arr[i + 1], arr[right] = arr[right], arr[i + 1] return i + 1 end -- 测试 local arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} quickSort(arr) for i, v in ipairs(arr) do print(v) end ``` 在上面的代码中,quickSort函数接收一个数组arr和两个可选参数left和right作为参数,其中left和right分别表示需要排序的子数组的左右边界,如果没有传递这两个参数,默认将整个数组排序。在快速排序中,我们首先通过partition函数将数组分成两个子数组,然后再对这两个子数组递归地进行快速排序。 在partition函数中,我们选择数组中的最后一个元素作为pivot,然后通过一次循环将数组分成两个子数组,其中一个子数组的所有元素都比pivot小,另一个子数组的所有元素都比pivot大。最后,将pivot交换到子数组的中间位置,返回pivot的索引。 在测试代码中,我们使用了一个随机数组进行测试,并打印出排序后的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值