一、什么是lua&luaJit
lua(www.lua.org)其實就是為了嵌入其它應用程序而開發的一個腳本語言,luajit(www.luajit.org)是lua的一個Just-In-Time也就是運行時編譯器,也可以說是lua的一個高效版。
二、優勢
1)lua是一個免費、小巧、簡單、強大、高效、輕量級的嵌入式的腳本語言,lua當前的發行版本5.3.1只有276k。
2)它是用C語言開發的項目,所以可以在大部分的操作系統上運行
3)lua是目前速度最快的腳本語言,既可以提升語言的靈活性還可以最大限度的保留速度
4)其語法非常簡單,沒有特例
5)lua還可以作為C的API來使用
三、不足和不同
1)lua沒有強大的庫,所以很多功能實現起來沒有python、perl、ruby等腳本語言簡潔
2)lua的異常處理功能飽受爭議,雖然其提供了pcall和xpcall的異常處理函數
3)lua原生語言中沒有提供對unicode編碼的支持,雖然可以通過一些折中的辦法實現 http://www.cppblog.com/darkdestiny/archive/2009/04/25/81055.html
4)沒有提供在C++中應用很廣泛的a?b:c的三元運算符操作
5)沒有switch...case...語法,只能通過if..elseif..elseif..else..end的方式折中實現
6)在循環時沒有提供continue語法
7)沒有C++中應用廣泛的a++和a+=1等操作
8)lua的索引是從1開始的,而不是我們熟悉的0(string,table)
9)當你給一個元素賦值為nil時相當於這個元素不存在
10)lua的數值類型只有number是沒有int,float,double等之分的
11)lua中沒有類的概念,其類是通過table的形式來實現的
12)lua中只有nil和false是表示假的,零在lua中是為真的
13)很多程序需要()標示才能運行,比如a={["b"]=5},print(a.b)是可運行的,但是 {["b"]=5}.b就會報錯,需要({["b"]=5}).b才可以
四、綜述
綜上,lua是一個簡單,高效所以在游戲邏輯開發和服務器開發中(ngx_lua)得到廣泛的應用。