Why Lua?
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
Why Lua?的更多相关文章
- lua执行字节码的过程介绍
前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a& ...
- lua 学习笔记(1)
一.lua函数赋值与函数调用 在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过 ...
- 在redis中使用lua脚本让你的灵活性提高5个逼格
在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了 ...
- 使用Nginx+Lua代理Hadoop HA
一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNo ...
- 打印Lua的Table对象
小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己 ...
- lua解析赋值类型代码的过程
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" ...
- 怎么调试lua性能
怎么调试lua性能 我们的游戏使用的是Cocos2dx-lua 3.9的项目,最近发现我们的游戏.运行比较缓慢.想做一次性能优化了.其实主要分为GPU.CPU的分别优化.GPU部分的优化.网上有很多优 ...
- Lua 安全调用 metatable 的简单应用
事情的经过 我们的项目中存在好几个战斗界面,不过界面中的内容略有不同.跟同事出去吃饭的时候,他问我.我们现在的战斗界面.有很多是重复的,但是也有偶尔几个地方不太一样.我在战斗过程中驱动这些界面的时候. ...
- 让Lua自己把文件夹下面的所有文件自动加载起来吧
没有想到我也做了一回标题党.其实这里边说的自动还是有夸大其词的部分.其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已. 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建 ...
- 让Lua支持Linq吧
第一次接触Linq是在使用C#的时候,这种语法,在处理列表数据非常方便.如果想了解Linq的更多内容可以百度一下Linq,不过你不了解也没关系,让我在Lua中给你展示一下Linq的魅力.简单点说,Li ...
随机推荐
- Hadoop_CDH安装
——本文非个人原创,为大牛同事整理,发布于此以备忘 1 CDH5.8安装(2018年4月19日) 1.1 物理服务器注意事项 (1)把raid都去掉了,每个物理盘都用raid0创建一个虚拟 ...
- 自动化测试_Mac安装python+selenium
1.下载安装(参照下文) https://blog.csdn.net/kacylining/article/details/60587484 https://www.zhihu.com/questio ...
- C#取出重复的方式以及用字典存储以键存储集合的方法
最近在做项目的时候,发现有些需求需要特别的方式来实现.下面看代码 private List<string> firstType = new List<string>(); pr ...
- centos7通过yum安装mysql8
1.检查是否安装mariadb rpm -qa | grep mariadb 若有会显示 mariadb-libs-5.5.56-2.el7.x86_64 2.卸载mariadb rpm -e --n ...
- vue state
vuex单一状态树,直接地定位任一特定的状态片段. vuex状态存储响应式,唯一store实例,从store中读取状态: 1.在计算属性中返回某个状态 2.在根实例中注册store选项,该 store ...
- 谈一谈socket与java
用java中socket实现socket聊天 1, 什么是socket Socket 是指网络套接字,什么是套接字呢? 这是网络上一种端对端的网络协议,端口就是进程号,socket在网 ...
- 数据看板superset在Windows环境下安装
@https://www.cnblogs.com/calmzeal/archive/2017/08/14/7359144.html 以下是我的安装版本与安装步骤: 1. 安装Python 3.7 , ...
- 网页真机调试之Browsersync简介
以前的调试方式 修改完项目文件(html.js.css等)后保存,在浏览器刷新页面查看修改后的效果 本地开启一个 tomcat 服务,修改文件后保存刷新页面,移动端或其他 pc 则需要输入 ip + ...
- Python-100道练习题答案
题目链接:http://www.runoob.com/python/python-100-examples.html #5. # def find_max(): # a=int(input(" ...
- Luminar 3 for Mac(照片编辑工具)v3.1.0中文特别版
Luminar for Mac是一款多功能照片编辑软件,使用独特的AI工具加快速度,具备AI Sky Enhancer.Accent AI.太阳光线等创新功能.当然也保留了原有的功能,帮助你轻松的修复 ...