![](https://img.kancloud.cn/16/5d/165d8cc5ec428b0998818aa117de43cf_882x1064.png)
# Linux上Lua应用实战与人工智能
本教程适用于至少了解并掌握一种类似C、C++、java 、OC等主流语言,具有基本脚本语言理解学习。 本教程主要包括 快速入门Lua语法,在Linux快速开发Lua脚本程序、Lua+Nginx、Lua+Redis等相关内容。
> ## 编著: 刘丹冰
> ## 公众号: 刘丹冰Aceld
# 1 Lua介绍及环境
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。
* 轻量级:它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
* 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言\(通常是C或C++\)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
* 其它特性:
* * 支持面向过程\(procedure-oriented\)编程和函数式编程\(functional programming\);
* 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
* 语言内置模式匹配;闭包\(closure\);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
* 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
* 游戏开发
* 独立应用脚本
* web应用脚本
* 扩展和数据库插件
* 安全系统:如入侵检测系统\(IDS\)
## 1.1 官方网站
[http://www.lua.org/](http://www.lua.org/)
中文在线文档 [http://www.runoob.com/manual/lua53doc/](http://www.runoob.com/manual/lua53doc/)
## 1.2 下载
[http://www.lua.org/download.html](http://www.lua.org/download.html)
找到 tar包进行下载。
或者使用以下指令安装。
```bash
curl -R -O http://www.lua.org/ftp/lua-5.1.tar.gz
tar zxf lua-5.1.tar.gz
cd lua-5.1
make linux
sudo make install
```
如果报错 找不到readline.h头文件
```bash
lua.c:80:31: fatal error: readline/readline.h: No such file or directory
#include <readline/readline.h>
^
compilation terminated.
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory `/root/lua/lua-5.3.2/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/root/lua/lua-5.3.2/src'
make: *** [linux] Error 2
```
解决办法:
```bash
缺少libreadline-dev依赖包
centos: yum install readline-devel
debian: apt-get install libreadline-dev
```
找不到-lncurses
apt-get install libncurses5-dev
## 1.3 运行第一个Lua程序
新建Hello\_lua.lua文件,写代码如下
```lua
print("Hello Lua!")
```
运行
```bash
lua Hello_lua.lua
```
输出
```bash
Hello Lua!
```
- 1 Lua介绍及环境
- 2 基本语法
- 3 数据类型
- 4 Lua 变量
- 5 循环
- 6 流程控制
- 7 函数
- 8 运算符
- 9 字符串
- 10 数组
- 11 迭代器
- 12 table
- 13 Lua 模块与包
- 14 Lua 元表(Metatable)
- 14.1 元表案例
- 15 Lua 协同程序(coroutine)
- 16 Lua 文件IO
- 17 Lua 面向对象
- 17.1 类
- 17.2 继承
- 17.3 封装
- 18 Lua 与 Mysql
- 19 Lua 与 redis
- 20 Lua 与 JSON
- 21 Lua 与 http
- 22 Lua 与 Nginx
- 22.1 Nginx_Lua的安装及环境
- 22.2 ngx_lua API(全表)
- 22.3 常用命令介绍
- 22 Lua 人工智能
- (1) Torch的安装
- (2)Tensor
- Lua与C混合编程