2012年3月24日 星期六

The Scripting Language Lua

Lua(發音露亞, 在葡萄牙語是月亮的意思) 是個描述語言, 專為嵌入其它程式語言(尤其是 C/C++)而設計, 其本身是以函式庫的形式存在, 因此需要一個宿主(host)程式才能夠運作. Lua 的優點:
  1. 程式語法簡單易學
  2. 基本函式庫小(只有幾百KB)
  3. 設計簡單, 效能比其它描述語言都好
  4. 只要短短幾行程式碼, 就能讓你的程式變為 Lua 的宿主
  5. 免費! 開源! 可用於商業軟體中!
基於以上優點, 很多商業軟體都使用 Lua, 譬如著名的 Photoshop 及 WoW(World of Warcraft) 等.

Lua 有一些好用的擴充函式庫, 如:
  • Alien - 可以很輕易地呼叫動態聯結函式庫中的函式
  • LuaCOM - 可以很輕易地透過 COM 操作其它應用程式(如 Excel)

Lua 好像不錯, 但是我的程式什麼時候需要它呢?
  • 需要功能強大的設定檔時
    一般我們會用類似 ini 格式的檔案作為程式的設定檔, 但如果這設定檔裡有一些運算或特別的處理, 我們必須預先想到, 並且在主程式裡做好處理. 然而, 如果用 Lua script 作為設定檔, 一些運算, 字串, 及語法直接被 Lua 處理了, 我們就不用在主程式中重新發明輪子囉!
  • 流程不確定, 需要反覆調整或客製
    當流程不確定, 或是需要能很自由地調整時, 我們最不希望的就是反覆地改程式 > 重新編譯 > 測試. 如果使用 Lua, 宿主程式可以新增/修改 Lua script 中的變數, 也可以呼叫 Lua script 裡的函式, 反過來, 宿主程式也可以提供函式讓 Lua script 呼叫, 如此一來, 等於是擴充了 Lua 的功能, 讓宿主程式支援強大的描述語言,  不用重新編譯宿主程式, 就能透過 Lua script 改變宿主程式的行為.


更多資訊:
The Programming Language Lualua-users - wiki
Scripting系統概論與Lua簡介
Embedding Lua in 5 Minutes
How to embed Lua 5.1 in C++
Embedding a scripting language inside your C/C++ code
Code example - redspiders project

沒有留言:

張貼留言