Lua 通过游戏产业大放了异彩,慢慢被认识。笔者已经有 3 年左右没用 Lua 开发工具了,在上一次要翻到 8 年前了,这个文章正好也说下自己对这块的浅显看法。
游戏应用面
Lua 是多面手,在网络游戏,数据结构,正反序列化数据,客户端 UI 插件逻辑,还包含客户端主逻辑,服务器部分逻辑,调度处理,研发工具,任务脚本等等。
单机游戏 除了上面网络部分的以外,其他包含,更是负责了一些辅助功能的开发,比如 CG 转换等。
Lua 也给脚本策划和中期的技术测试提供了不少机会,脚本策划做着做着又学门 java 或者 C++ 转服务端的也不少。
服务端框架
云风 skynet
计算机科学
可以说核心面根据图像学载体特性用更低级的语言和 Lua 做胶水。而对于一门语言来说,都可以实现大部分你能想到的功能,差异只是在团队人员属性,决定了开发时间和语言熟悉度,在往下就是考虑照顾到 IO 密集或者 CPU 密集,还有一些特殊领域的特性比如时间序列和语言创造性。最后还有不同城市对于语言选择是有差异的,分析后发现很有意思,可以自行了解。
在未来上云趋势的学习角度来看,要深入掌握 go 语言,选择 Python/C++ 去学习 go,会比 Python/Lua 去学习 go 要慢,当然一分投入一分收获。
Lua 和 C++ 之间通过虚拟栈有天然优势,一些框架来说只需要用 Lua 完成 C++ 之间的交互就行,这个对于前后端一起玩的人来说,投入 Lua 比啃完 C++2 个版本要舒心不少。
通用面
应用在方方面面,方方有安全杀毒,数据收集分析,人工智能, 面面有转换不同平台的使用 IOS,安卓,支持 C#,Java,C,C++,Python,Go 等语言 也是一门值得投入的语言。
1.BAT 里面的 T 对 Lua 也有不少投入,地址如下
著名的 xLua 在腾讯内部不光只有游戏部门使用 (已开源) xLua
另外一个基于腾讯 xLua 扩展的高星的框架 高星框架 Lua/C++
2.BAT 中的 A 在中期就把 Lua 解释器引入到 Nginx 中,淘宝的 Openresty 就是一个例子,应该还有其他,但对阿里系的不清楚。
根据上文 Lua 恰好是从上到中间都是比较兼容的,甚至在移动端前端开发方面也有优势.LuaViewSDK
3.百度也有这里就不讲述了。后面还出现了一些基于 Lua 源码做重新编译修改的 uLua.
杂谈
Lua 开发出来的文件较小,在目前年代已经不太在意这个了,但是用 Lua 或者一门语言一招鲜吃遍天,也是不可能的。
优点:Lua 没有 Java 和 Python 一样大而全的库,也可以很便利的处理文件转换和解析。
不同语言有对应的特性,是否需要舍近求远,这点也是团队对于某个 Lua 有关工作技术栈选型的一项核查标准。
覆盖面上,Lua 也适合写网络,Libuv in Lua 就不如 in Nodejs.
Lua 是可以学习到可读和可写二个层面的语言,如果一大部分逻辑是用 Lua 的游戏产业,可以把 Lua 作为主力开发语言,也可以做为读懂后翻译成基础逻辑,在用其他语言去开发。
基础语言速成 这里就不讲了,后面有时间可以对 Lua table 专门讲讲应用场景,可以推荐 2 本书。
游戏产业 可以看一本很厚的书《魔兽世界编程宝典》
其他产业 可以看 Programming in Lua 你懂的。
学习时会发现的差异性
1.数组存储是从 1 开始,取下标也是 1 开始,所以没有 0 的概念。
2.OOP 很早会接触到元,元是必要性的,向 python 完全不用元也可以写。
像函数返回解构和声明式调用散落在其他语言中,所以 Lua 做为第一门语言也是不错的选择,后面学别的也有一定的亲切感和便于快速入门。
人生苦短,不光有 Python,尤其一个企业里面只有 2 个人用 Python 也是一个很蛋疼的事,还不如用 Lua 了。