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

郵箱
huangbenjincv@163.com

庆阳市| 福海县| 隆子县| 康马县| 和林格尔县| 军事| 南安市| 辽阳县| 瑞丽市| 英山县| 锡林郭勒盟| 遵化市| 延吉市| 冕宁县| 丰宁| 莱芜市| 桐柏县| 陆良县| 阿克| 湟源县| 游戏| 台北县| 湄潭县| 曲阳县| 达州市| 广州市| 苍南县| 山阴县| 岗巴县| 杭锦后旗| 汽车| 恩施市| 体育| 长沙县| 镇安县| 元阳县| 舟山市| 南郑县| 烟台市| 萨嘎县| 江口县|