openresty开发系列12--lua介绍及常用数据类型简介
openresty開發(fā)系列12--lua介紹及常用數(shù)據(jù)類型簡介
lua介紹
? 1993 年在巴西里約熱內(nèi)盧天主教大學(xué)(Pontifical Catholic University of Rio de Janeiro in Brazil)誕生了一門編程語言,發(fā)明者是該校的三位研究人員,他們給這門語言取了個(gè)浪漫的名字——Lua,在葡萄牙語里代表美麗的月亮。事實(shí)證明她沒有糟蹋這個(gè)優(yōu)美的單詞,Lua 語言正如它名字所預(yù)示的那樣成長為一門簡潔、優(yōu)雅且富有樂趣的語言。
? Lua 從一開始就是作為一門方便嵌入(其它應(yīng)用程序)并可擴(kuò)展的輕量級(jí)腳本語言來設(shè)計(jì)的,因此她一直遵從著簡單、小巧、可移植、快速的原則,官方實(shí)現(xiàn)完全采用 ANSI C 編寫,能以 C 程序庫的形式嵌入到宿主程序中。LuaJIT 2 和標(biāo)準(zhǔn) Lua 5.1 解釋器采用的是著名的 MIT 許可協(xié)議。正由于上述特點(diǎn),所以 Lua 在游戲開發(fā)、機(jī)器人控制、分布式應(yīng)用、圖像處理、生物信息學(xué)等各種各樣的領(lǐng)域中得到了越來越廣泛的應(yīng)用。其中尤以游戲開發(fā)為最,許多著名的游戲都有l(wèi)ua的身影
Lua 和 LuaJIT 的區(qū)別
? Lua 非常高效,它運(yùn)行得比許多其它腳本(如 Perl、Python、Ruby)都快,這點(diǎn)在第三方的獨(dú)立測評(píng)中得到了證實(shí)。盡管如此,仍然會(huì)有人不滿足,他們總覺得"嗯,還不夠快!"。LuaJIT 就是一個(gè)為了再榨出一些速度的嘗試,它利用即時(shí)編譯(Just-in Time)技術(shù)把 Lua 代碼編譯成本地機(jī)器碼后交由 CPU 直接執(zhí)行。LuaJIT 2 的測評(píng)報(bào)告表明,在數(shù)值運(yùn)算、循環(huán)與函數(shù)調(diào)用、協(xié)程切換、字符串操作等許多方面它的加速效果都很顯著。憑借著 FFI 特性,LuaJIT 2 在那些需要頻繁地調(diào)用外部 C/C++ 代碼的場景,也要比標(biāo)準(zhǔn) Lua 解釋器快很多。目前 LuaJIT 2 已經(jīng)支持包括 i386、x86_64、ARM、PowerPC 以及 MIPS 等多種不同的體系結(jié)構(gòu)。
? LuaJIT 是采用 C 和匯編語言編寫的 Lua 解釋器與即時(shí)編譯器。LuaJIT 被設(shè)計(jì)成全兼容標(biāo)準(zhǔn)的 Lua 5.1 語言,同時(shí)可選地支持 Lua 5.2 和 Lua 5.3 中的一些不破壞向后兼容性的有用特性。因此,標(biāo)準(zhǔn) Lua 語言的代碼可以不加修改地運(yùn)行在 LuaJIT 之上。LuaJIT 和標(biāo)準(zhǔn) Lua 解釋器的一大區(qū)別是,LuaJIT 的執(zhí)行速度,即使是其匯編編寫的 Lua 解釋器,也要比標(biāo)準(zhǔn) Lua 5.1 解釋器快很多,可以說是一個(gè)高效的 Lua 實(shí)現(xiàn)。另一個(gè)區(qū)別是,LuaJIT 支持比標(biāo)準(zhǔn) Lua 5.1 語言更多的基本原語和特性,因此功能上也要更加強(qiáng)大。
?
2)應(yīng)用場景
??? 1. 在很多時(shí)候,我們可以將Lua直接嵌入到我們的應(yīng)用程序中,如游戲、監(jiān)控服務(wù)器等。這樣的應(yīng)用方式對(duì)于程序的最終用戶而言是完全透明的,但是對(duì)于程序本身,其擴(kuò)展性將會(huì)得到極大的增強(qiáng)。
?? ?
2. 將Lua視為一種獨(dú)立的腳本語言,通過它來幫助我們完成一些軟件產(chǎn)品的輔助性工具的開發(fā)。比如在我們之前的數(shù)據(jù)分析產(chǎn)品中,我們通過編寫Lua腳本,將每個(gè)用戶不同格式的數(shù)據(jù)重新格式化為我們的軟件平臺(tái)能夠讀取的格式,之后再將格式化的后的數(shù)據(jù)加載到數(shù)據(jù)庫中,或者是寫入我們的分析引擎可以識(shí)別的數(shù)據(jù)分析文件中。這其中Lua僅僅用于文件格式的規(guī)格化過程,至于此后的操作,都是通過Lua調(diào)用我們的C語言導(dǎo)出函數(shù)來完成的。
?? ?
3. 將Lua應(yīng)用于應(yīng)用程序的動(dòng)態(tài)配置部分。比如移動(dòng)智能設(shè)備或嵌入式設(shè)備,它們的顯示分辨率在很多情況下都是非標(biāo)準(zhǔn)的,如果我們?yōu)槊恳豢钤O(shè)備都維護(hù)一套相關(guān)的配置信息,這無疑會(huì)加大我們程序的維護(hù)開銷,如果我們將這段動(dòng)態(tài)配置邏輯交由Lua腳本完成,那么這對(duì)于程序配置的靈活性而言,將會(huì)得到很大的提高。甚至可以是這樣,運(yùn)行在移動(dòng)終端設(shè)備上的應(yīng)用程序,在啟動(dòng)主窗體之前先和服務(wù)器建立連接,在服務(wù)器確認(rèn)設(shè)備的各種參數(shù)后,再將和該設(shè)備顯示相關(guān)的Lua腳本發(fā)送給設(shè)備客戶端,這樣客戶端在得到Lua腳本之后,就可以立刻執(zhí)行它以得到最新的動(dòng)態(tài)配置信息。
3)主要優(yōu)勢
1. 高效性:
作為一種腳本語言,Lua的高效是眾所周知的,因此在實(shí)際應(yīng)用中,很多大型程序都會(huì)考慮將代碼中易變的部分用Lua來編寫。這不但沒有明顯降低系統(tǒng)的運(yùn)行效率,反而使程序的穩(wěn)定性和可擴(kuò)展性得到了顯著的提升。
2. 可移植性:
在官方網(wǎng)站中提供了基于多種平臺(tái)的發(fā)布包,如Linux/Unix、Windows、Symbian和Pocket PC等。
?? ?
3. 可嵌入性:
在語言設(shè)計(jì)之初,Lua就被準(zhǔn)確的定位為嵌入式腳本語言,因此Lua的設(shè)計(jì)者們?yōu)長ua提供了與其他編程語言之間的良好交互體驗(yàn),這特別體現(xiàn)在和C/C++之間的交互上。對(duì)于其他語言,如Java和C#,也可以將Lua作為其嵌入式腳本引擎,并在代碼中進(jìn)行直接的交互。
?? ?
4. 簡單強(qiáng)大:
盡管是過程化腳本語言,但由于Lua的設(shè)計(jì)者們?yōu)長ua提供了meta-mechanisms機(jī)制,這不僅使Lua具備了一些基本的面向?qū)ο筇卣?#xff0c;如對(duì)象和繼承,而且仍然保持了過程化語言所具有的語法簡單的特征。
?? ?
5. 小巧輕便:
在最新版本(5.2.0)的Lua中,僅僅包含了大約20000行的C語言代碼,編譯后的庫文件大小約為240K左右,因此這對(duì)于很多資源有限的平臺(tái)有著極強(qiáng)的吸引力。
?? ?
6. 免費(fèi)開源:
MIT Licence可以讓Lua被免費(fèi)的用于各種商業(yè)程序中。
lua的常用數(shù)據(jù)類型簡介
?
轉(zhuǎn)載于:https://www.cnblogs.com/reblue520/p/11429487.html
總結(jié)
以上是生活随笔為你收集整理的openresty开发系列12--lua介绍及常用数据类型简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openresty开发系列11--ope
- 下一篇: openresty开发系列13--lua