1-1、Lua总结开篇

一、序言

最近在开发物联网相关的探针业务,用于对机顶盒中的网络数据进行嗅探并处理以获取用户行为数据,然后提供给大数据平台。由此,我们可以看到物联网很大一部分功能是为大数据服务的,采集“物”中的数据提供给大数据平台,而进一步讲,大数据的数据提供给人工智能进行学习人工智能才能更智能。物联网-大数据-人工智能这三者之间存在一定的关联性,先扯一下目前的大环境,然后我们进入正题~_~。

物联网开发大多是嵌入式环境,对于程序占用的cpu和内存有严格的要求,一般都是C语言进行开发,c++都很少使用,而涉及到较多的数据(主要是字符串)处理时c并不擅长,这时一般是采用一些脚本来辅助C进行处理,之前游戏开发使用Lua就有这方面的考虑,再加上其整合特性,之前Lua是大量使用Lua脚本进行组件粘合的,可惜现在游戏开发大多使用python了(游戏开发不缺那点资源,python基础库太多了,粘合性也非常强),但是对于嵌入式环境python基础库占用的资源还是有些多,所以目前Lua在嵌入式开发中还是占有一定比重的。而且由于nginx和ruby以及Lua的一定契合,所以目前Lua还是有可用和可学之处的。

这里总结主要是将Lua语法进行简单梳理,然后将这段时间的开发经验记录一下。

二、Lua特性

以下来自programing in Lua这本书(需要的回复我发链接,有条件的请支持正版):

① 可扩展性。Lua的扩展性非常卓越,以至于很多人把Lua用作搭建领域语言的工具(注:比如游戏脚本)。Lua被设计为易于扩展的,可以通过Lua代码或者C代码扩展,Lua的很多功能都是通过外部库来扩展的。Lua很容易与C/C++、java、fortran、Smalltalk、Ada,以及其他语言接口。

② 简单。Lua本身简单,小巧;内容少但功能强大,这使得Lua易于学习,很容易实现一些小的应用。他的完全发布版(代码、手册以及某些平台的二进制文件)仅用一张软盘就可以装得下。

③ 高效率。Lua有很高的执行效率,统计表明Lua是目前平均效率最高的脚本语言。

④ 与平台无关。Lua几乎可以运行在所有我们听说过的系统上,如NextStep、OS/2、PlayStation II (Sony)、Mac OS-9、OS X、BeOS、MS-DOS、IBM mainframes、EPOC、PalmOS、MCF5206eLITE Evaluation Board、RISC OS,及所有的Windows和Unix。Lua不是通过使用条件编译实现平台无关,而是完全使用ANSI (ISO) C,这意味着只要你有ANSI C编译器你就可以编译并使用Lua。

Lua大部分强大的功能来自于他的类库,这并非偶然。Lua的长处之一就是可以通过新类型和函数来扩展其功能。动态类型检查最大限度允许多态出现,并自动简化调用内存管理的接口,因为这样不需要关心谁来分配内存谁来释放内存,也不必担心数据溢出。高级函数和匿名函数均可以接受高级参数,使函数更为通用。

Lua自带一个小规模的类库。在受限系统中使用Lua,如嵌入式系统,我们可以有选择地安装这些类库。若运行环境十分严格,我们甚至可以直接修改类库源代码,仅保留需要的函数。记住:Lua是很小的(即使加上全部的标准库)并且在大部分系统下你仍可以不用担心的使用全部的功能。

三、Lua使用者

Lua使用者分为三大类:使用Lua嵌入到其他应用中的、独立使用Lua的、将Lua和C混合使用的。

第一:很多人使用Lua嵌入在应用程序,比如CGILua(搭建动态网页)、LuaOrb(访问CORBA对象。这些类型用Lua-API注册新函数,创建新类型,通过配置Lua就可以改变应用宿主语言的行为。通常,这种应用的使用者并不知道Lua是一种独立的语言。例如:CGILua用户一般会认为Lua是一种用于Web的语言。比如路由器中的基于Luci的配置界面,我开始主要接触Lua就是在开发一款基于openwrt系统的网关的时候。

第二:作为一种独立运行的语言,Lua也是很有用的,主要用于文本处理或者只运行一次的小程序。这种应用Lua主要使用它的标准库来实现,标准库提供模式匹配和其它一些字串处理的功能。我们可以这样认为:Lua是文本处理领域的嵌入式语言。我现在的工作更多处于这个位置,调用C(pcap开源库抓取网络数据)提供的接口获取数据,然后结合业务逻辑将网络数据整合成平台需要的数据。

第三:还有一些使用者使用其他语言开发,把Lua当作库使用。这些人大多使用C语言开发,但使用Lua建立简单灵活易于使用的接口。

本书面向以上三类读者。书的第一部分阐述了语言的本身,展示语言的潜在功能。我们讲述了不同的语言结构,并用一些例子展示如何解决实际问题。这部分既包括基本的语言的控制结构,也包括高级的迭代子和协同。

第二部分重点放在Lua特有的数据结构——tables上,讨论了数据结构、持久性、包及面向对象编程,这里我们将看到Lua的真正强大之处。

第三部分介绍标准库。每个标准库一章:数学库、table库、string库、I/O库、OS库、Debug库。

最后一部分介绍了Lua和C接口的API,这部分介绍在C语言中开发应用而不是Lua中,应用对于那些打算将Lua嵌入到C/C++中的读者可能会对此部分更感兴趣。

四、Lua学习资源(不需要翻墙)

– Lua用户社区,提供了一些第三方包和文档

http://lua-users.org

– 本书的更新勘误表,代码和例子

http://www.inf.puc-rio.br/~roberto/book/

发布了119 篇原创文章 · 获赞 138 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/weixin_39510813/article/details/100156219
1-1