一、簡介:
Lua作為目前最為流行的、免費輕量級嵌入式腳本語言,在很多工業級的應用程序中被廣泛應用,如Adobe's Photoshop,甚至是在一些著名的游戲程序中也被大量使用,如星際。不僅如此,由于Lua具備很多特殊的優點,如語法簡單(基于過程)、高效穩定(基于字節碼)、可以處理復雜的數據結構、動態類型、以及自動內存管理(基于垃圾收集)等,因此在很多嵌入式設備和智能移動設備中,為了提高程序的靈活性、擴展性和高可配置性,一般都會選擇Lua作為它們的腳本引擎,以應對各種因設備不同而帶來的差異。
二、主要優勢:
1. 高效性:
作為一種腳本語言,Lua的高效是眾所周知的,因此在實際應用中,很多大型程序都會考慮將代碼中易變的部分用Lua來編寫。這不但沒有明顯降低系統的運行效率,反而使程序的穩定性和可擴展性得到了顯著的提升。
2. 可移植性:
在官方網站中提供了基于多種平臺的發布包,如Linux/Unix、Windows、Symbian和Pocket PC等。
3. 可嵌入性:
在語言設計之初,Lua就被準確的定位為嵌入式腳本語言,因此Lua的設計者們為Lua提供了與其他編程語言之間的良好交互體驗,這特別體現在和C/C++之間的交互上。對于其他語言,如Java和C#,也可以將Lua作為其嵌入式腳本引擎,并在代碼中進行直接的交互。
4. 簡單強大:
盡管是過程化腳本語言,但由于Lua的設計者們為Lua提供了meta-mechanisms機制,這不僅使Lua具備了一些基本的面向對象特征,如對象和繼承,而且仍然保持了過程化語言所具有的語法簡單的特征。
5. 小巧輕便:
在最新版本(5.2.0)的Lua中,僅僅包含了大約20000行的C語言代碼,編譯后的庫文件大小約為240K左右,因此這對于很多資源有限的平臺有著極強的吸引力。
6. 免費開源:
MIT Licence可以讓Lua被免費的用于各種商業程序中。
三、應用場景:
1. 在很多時候,我們可以將Lua直接嵌入到我們的應用程序中,如游戲、監控服務器等。這樣的應用方式對于程序的最終用戶而言是完全透明的,但是對于程序本身,其擴展性將會得到極大的增強。
2. 將Lua視為一種獨立的腳本語言,通過它來幫助我們完成一些軟件產品的輔助性工具的開發。比如在我們之前的數據分析產品中,我們通過編寫Lua腳本,將每個用戶不同格式的數據重新格式化為我們的軟件平臺能夠讀取的格式,之后再將格式化的后的數據加載到數據庫中,或者是寫入我們的分析引擎可以識別的數據分析文件中。這其中Lua僅僅用于文件格式的規格化過程,至于此后的操作,都是通過Lua調用我們的C語言導出函數來完成的。
3. 將Lua應用于應用程序的動態配置部分。比如移動智能設備或嵌入式設備,它們的顯示分辨率在很多情況下都是非標準的,如果我們為每一款設備都維護一套相關的配置信息,這無疑會加大我們程序的維護開銷,如果我們將這段動態配置邏輯交由Lua腳本完成,那么這對于程序配置的靈活性而言,將會得到很大的提高。甚至可以是這樣,運行在移動終端設備上的應用程序,在啟動主窗體之前先和服務器建立連接,在服務器確認設備的各種參數后,再將和該設備顯示相關的Lua腳本發送給設備客戶端,這樣客戶端在得到Lua腳本之后,就可以立刻執行它以得到最新的動態配置信息。
最后需要特別指出的是,學習Lua對于我們知識的系統性和完整性而言將是非常重要的一環,特別是對那些致力于軟件架構設計和軟件解決方案分析的高級軟件專業人員而言就更是如此。因為在很多時候,如果我們能夠很充分的理解和駕馭Lua,它不僅可以為我們的軟件產品增色很多,而且也可以為我們技術人員帶來一些意想不到的收獲。
這是Lua系列的第一篇博客,此后還會有十幾篇相關的博客陸續發布,請有興趣的網友持續保持關注。如有問題,歡迎及時指正。好了,那就讓我們一起開始Lua的學習之旅吧。:)