本初版是為 Lua 5.0 所寫。儘管對後續版本仍然有很大的關聯性,但仍有一些差異。
第四版針對 Lua 5.3,可在 Amazon 和其他書店購買。
購買本書,您也協助 支援 Lua 計畫


目前,許多程式語言都關注如何協助您撰寫包含數十萬行的程式。為此,它們提供套件、命名空間、複雜的類型系統、無數的建構和數千頁的說明文件供您研究。

Lua 沒有試著協助您撰寫包含數十萬行的程式。相反地,Lua 試著協助您僅用數百行甚至更少的程式碼解決您的問題。為了達成此目標,Lua 依賴於可擴充性,就像許多其他語言一樣。然而,與大多數其他語言不同的是,Lua 不僅可以輕鬆地使用 Lua 本身撰寫的軟體進行擴充,還可以輕鬆地使用其他語言(例如 C 和 C++)撰寫的軟體進行擴充。

Lua 從一開始就設計為與 C 和其他傳統語言所撰寫的軟體整合。這種語言的二元性帶來許多好處。Lua 是一個微小且簡單的語言,部分原因是它不會嘗試執行 C 已經擅長的工作,例如純粹的效能、低階運算或與第三方軟體的介面。Lua 依賴 C 來執行這些任務。Lua 所提供的正是 C 不擅長的工作:與硬體保持良好距離、動態結構、沒有冗餘、易於測試和除錯。為此,Lua 有一個安全的環境、自動記憶體管理,以及處理字串和其他具有動態大小資料類型的絕佳功能。

Lua 不僅是一種可擴充的語言,它也是一種黏合語言。Lua 支援軟體開發的元件導向方法,我們可以在其中透過黏合現有的高階元件來建立應用程式。通常,這些元件是用編譯的靜態類型語言(例如 C 或 C++)撰寫的;Lua 是我們用來組成和連接這些元件的黏合劑。通常,元件(或物件)代表更具體的低階概念(例如小工具和資料結構),這些概念在程式開發期間不會有太多變更,而且會佔用最終程式大部分的 CPU 時間。Lua 提供應用程式的最終形式,這可能會在產品的生命週期中發生很大的變化。然而,與其他黏合技術不同的是,Lua 也是一種成熟的語言。因此,我們不僅可以使用 Lua 來黏合元件,還可以調整和重新塑造它們,甚至可以建立全新的元件。

當然,Lua 並不是唯一的腳本語言。還有其他語言可以讓您用於大致相同的目的,例如 Perl、Tcl、Ruby、Forth 和 Python。下列功能讓 Lua 與這些語言區分開來;儘管其他語言與 Lua 共享其中一些功能,但沒有其他語言提供類似的設定檔

Lua 的強大功能在很大程度上來自於其函式庫。這並非偶然。Lua 的主要優勢之一是透過新的類型和函式進行擴充。許多功能都促成了這種優勢。動態型別允許高度的多型性。自動記憶體管理簡化了介面,因為不需要決定誰負責配置和解除配置記憶體,或如何處理溢位。高階函式和匿名函式允許高度參數化,讓函式更具通用性。

Lua 附帶一組標準函式庫。在受嚴格限制的環境(例如嵌入式處理器)中安裝 Lua 時,明智的做法是仔細選擇您需要的函式庫。此外,如果限制很嚴格,可以輕鬆地進入函式庫的原始碼,並逐一選擇應保留哪些函式。但是,請記住,Lua 相當精簡(即使包含所有標準函式庫),而且在大多數系統中,您都可以毫無顧慮地使用整個套件。