Lua 是一個(gè)小巧的腳本語(yǔ)言。是巴西里約熱內(nèi)盧天主教大學(xué)(Pontifical Catholic University of Rio de Janeiro)里的一個(gè)研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成并于1993年開(kāi)發(fā)。 其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。
 Lua語(yǔ)言的一個(gè)很大的特點(diǎn)是它的基于關(guān)聯(lián)表的設(shè)計(jì)。Roberto教授認(rèn)為L(zhǎng)isp/Scheme的基于List的設(shè)計(jì)給了他很大的啟發(fā)。但是List只適合于函數(shù)式編程語(yǔ)言,所以他選擇了table。Lua的所有的全局變量都是存在一個(gè)名字叫_G的關(guān)聯(lián)表中。比如下面的代碼可以打印出當(dāng)前執(zhí)行環(huán)境中所有的全局變量。
    for n in pairs(_G) do print(n) end
Lua的模塊也是基于關(guān)聯(lián)表的。Lua的關(guān)聯(lián)表還能用來(lái)模擬實(shí)現(xiàn)面向?qū)ο缶幊獭.?dāng)然,由于關(guān)聯(lián)表其實(shí)就是{name-object}對(duì),所以它沒(méi)有訪(fǎng)問(wèn)控制機(jī)制。按照Roberto教授的說(shuō)法,Lua只是設(shè)計(jì)為小型嵌入式編程,如果想不訪(fǎng)問(wèn)對(duì)象的私有數(shù)據(jù),你不訪(fǎng)問(wèn)它就是了。
    Lua另一個(gè)給我較深印象的是它和C語(yǔ)言的接口。Lua、Ruby等語(yǔ)言都有自己的垃圾收集機(jī)制,所以需要語(yǔ)言本身的運(yùn)行時(shí)環(huán)境來(lái)管理內(nèi)存。這樣在和C語(yǔ)言交互的時(shí)候,內(nèi)存管理就很麻煩。Ruby在這方面應(yīng)該做的不好。最近幾年RoR很流行,很多網(wǎng)站都是基于Ruby編寫(xiě)的。由于Ruby最初的定位可能也是小型應(yīng)用,沒(méi)想到現(xiàn)在用到了服務(wù)器端,需要7×24小時(shí)運(yùn)行。所以Ruby的內(nèi)存泄漏問(wèn)題被放大了。Lua通過(guò)定義了一個(gè)虛擬棧來(lái)和C語(yǔ)言交互,所有的數(shù)據(jù)交互都通過(guò)這個(gè)棧來(lái)完成。這個(gè)棧解決了兩個(gè)問(wèn)題,一個(gè)是Lua使用垃圾收集而C語(yǔ)言要自己管理內(nèi)存,另一個(gè)是Lua使用動(dòng)態(tài)類(lèi)型而C語(yǔ)言是靜態(tài)類(lèi)型的。

郵箱
huangbenjincv@163.com

嘉义市| 荃湾区| 新密市| 古交市| 呼玛县| 通山县| 慈溪市| 彭阳县| 崇义县| 富裕县| 武功县| 同德县| 东山县| 南华县| 武强县| 河源市| 新疆| 禹州市| 华亭县| 永吉县| 龙山县| 高台县| 曲水县| 木里| 壶关县| 永嘉县| 左权县| 崇明县| 无棣县| 景谷| 霍州市| 同江市| 闵行区| 泰和县| 枣阳市| 原阳县| 平果县| 新丰县| 武冈市| 庆云县| 辽中县|