Arry's cnBlog

Barcelona win

博客园 首页 新随笔 联系 订阅 管理

Why Lua?


最近在很多的地方都遇到了lua这个东西,于是想一探究竟,为什么这么多的游戏前端都用了Lua脚本呢?

于是乎简单的看了一下Lua,目前总结出来了几点~


还是先放上资源:

GitHub上Lua的开源项目:https://github.com/rjpcomputing/luaforwindows/releases


(1)从语言上来说呢,Lua是一种小巧的脚本语言(像js,python等脚本语言),用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能;一些游戏(或者说许多游戏)核心部分是用c/c++来写的,不是说一定得用Lua这样的脚本语言,但c/c++在前端写起来会非常的臃肿,为什么不用小巧的Lua等脚本语言代替呢?既有c/c++的功能接口,又显得不那么多,


可以看到,Lua非常的小了,虽说看过Python和Lua,发现这2者在许多地方都非常的相似,但Lua要轻便的多,Lua一开始就把自己做的比较清爽,只做它该做的事,其它的都不管,小巧,灵活是它的特点;


Lua 特性:

轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里,

可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样,

其它特性:

支持面向过程(procedure-oriented)编程和函数式编程(functional programming),

自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象,

语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持,

通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等,


Lua应用的一些场景:

游戏开发(很多了),

独立应用脚本,

Web 应用脚本,

扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench,

安全系统,如入侵检测系统,


(2)热更新,尤其是对手游来说,这一点也是大佬告诉我的,热更新在游戏开发时是一件很重要的事情,不管是对于服务器还是客户端,总不能有一点改动就重新打包,发布,更新吧,热更新就是要让玩家感觉不到更新,而是我们在后台帮它做了,客户端使用Lua就能解决这个问题;


最后说一下看完Lua教程的感受:

我是先看完的Python,再看的Lua,初一看,我去,这么相似,可能是受java和c++的影响,初一看这样的脚本语言是会觉得语法呀,数据啊比较的相似,但你会发现每种脚本语言吸引人的地方都不一样,拿Python来说,初识Python的我对它的CGI编程非常感兴趣,而Lua给我的印象就是:小,但功能全;语法上让我这个c++出身的我有很大的强迫症,QAQ,功能上给我的感觉是在给像c/c++这类的大型语言做扩展,整体上来说不算太难,比较好入门,是值得一学的一门语言!


Valar Morghulis - @Arya

posted on 2017-10-05 12:02  Arry  阅读(128)  评论(0编辑  收藏  举报