跳至內容

Lua

輕之舟百科,讓知識輕裝啟航
云云​(對話 | 貢獻)2026年8月9日 (日) 16:03的修訂 (创建页面,内容为“ Lua(发音:/ˈluːə/,葡萄牙语意为"月亮")是一种轻量级、多范型的脚本编程语言,由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro, PUC-Rio)的Roberto Ierusalimschy、Waldemar Celes与Luiz Henrique de Figueiredo于1993年设计开发。<ref name=":0">[https://www.lua.org/about.html About Lua]</ref><ref name=":1">[https://en.wikipedia.org/wiki/Lua_(programming_language) Lua (pr…”)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)


Lua(发音:/ˈluːə/,葡萄牙语意为"月亮")是一种轻量级、多范型的脚本编程语言,由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro, PUC-Rio)的Roberto Ierusalimschy、Waldemar Celes与Luiz Henrique de Figueiredo于1993年设计开发。[1][2] 该语言以可嵌入性、简洁语法与高效执行著称,核心解释器以ANSI C编写,遵循MIT许可证发布,具备跨平台能力。[1][2] Lua被广泛应用于游戏开发、嵌入式系统、Web服务器及数据库脚本等领域,其设计哲学强调通过少量核心机制提供强大的扩展能力。[2]
Lua
編程范型 多范型:過程式、函數式、面向對象、數據驅動、反射
設計者 Roberto Ierusalimschy
Waldemar Celes
Luiz Henrique de Figueiredo
首次出現 1993年
穩定版本 5.4.7(2024年7月11日)
類型系統 動態類型、強類型、鴨子類型
實現語言 ANSI C
作業系統 跨平台
許可證 MIT License
文件擴展名 .lua
官方網站 www.lua.org
主要實現 Lua、LuaJIT
受影響語言 C++、CLU、Modula、Scheme、SNOBOL
影響語言 JavaScript、Julia、Ruby、Squirrel、MoonScript

歷史

起源

Lua誕生於1993年,其開發工作始於巴西里約熱內盧天主教大學(PUC-Rio)的計算機圖形技術組(Tecgraf)。[3] 該項目的三位主要創始人——Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo——最初旨在創建一種可嵌入的擴展語言,以滿足日益增長的軟件定製化需求。[2] Lua的設計直接受到了此前為巴西石油公司(Petrobras)開發的SOL(Simple Object Language)和DEL(Data-Entry Language)兩種語言的影響。[4]

版本演進

Lua 1.0於1993年正式發布,確立了其作為輕量級嵌入式腳本語言的定位。[3] 隨後的2.x與3.x系列逐步引入了元表、改進的垃圾回收等機制,持續增強語言的擴展能力。[2] Lua 5.0(2003年)帶來了基於寄存器的虛擬機等重大架構變革。[2] 2006年發布的Lua 5.1引入了標準化的模塊加載機制,成為長期廣泛應用的版本。[3] Lua 5.3(2015年)增加了獨立的整數類型和位運算支持。[3] 2020年發布的Lua 5.4引入了代際垃圾回收(generational garbage collection)、待關閉變量(to-be-closed variables)和常量變量等特性。[5] 截至2024年7月,最新穩定版本為Lua 5.4.7。[6]

設計哲學與特性

輕量與可嵌入性

Lua的核心設計目標之一是極小化運行時體積與資源佔用,使其能夠在內存和存儲受限的嵌入式環境中高效運行。[1] 語言通過簡潔的C API與宿主程序交互,允許開發者將Lua腳本引擎無縫集成至以C、C++或其他語言編寫的應用程式中。[2]

數據類型與表

Lua採用動態類型系統,基礎數據類型包括nil、boolean、number、string、function、userdata、thread和table。[1] 其中,表(table)是Lua唯一的核心數據結構,兼具數組、哈希表和對象的能力,通過元表機制可實現運算符重載、面向對象編程等高級特性。[2]

多範式支持

Lua支持多種編程範式:過程式編程通過函數和控制結構實現;函數式編程藉助一等公民函數(first-class functions)和閉包(closures)完成;面向對象特性則通過表和元表模擬實現,而非內置類與繼承機制。[1][2] 此外,Lua的協程(coroutine)機制提供了協作式多任務處理能力。[2]

應用領域

電子遊戲

Lua在遊戲產業中佔據重要地位。2003年GameDev.net的調查顯示Lua是當時最受歡迎的遊戲腳本語言。[2] 2012年1月,Lua榮獲《Game Developer》雜誌頒發的2011年前線獎(Front Line Award)編程工具類獎項。[2] 該語言被用於《魔獸世界》(World of Warcraft)、《憤怒的小鳥》(Angry Birds)、《文明V》(Civilization V)、《孤島危機》(Crysis)等知名遊戲的腳本系統,同時也是Roblox平台的官方編程語言。[2][7]

系統軟件與嵌入式

憑藉極小的運行時體積,Lua被廣泛應用於嵌入式系統和固件開發。同時,它也作為擴展語言集成於Redis數據庫、LuaTeX排版系統、Nginx Web伺服器及VLC媒體播放器等軟件中。[2][8]

Web與網絡服務

在Web伺服器領域,Lua通過Nginx及Apache的mod_lua模塊提供了高性能的伺服器端腳本能力。[2] 此外,LuaTeX排版系統使用Lua替代傳統的TeX宏語言,實現了更靈活的文檔處理。[2]

實現與生態

官方實現

Lua的參考實現由官方團隊維護,以純ANSI C編寫,確保了高度的可移植性。原始碼開放,遵循MIT許可證,允許自由用於商業和非商業項目。[1]

第三方實現

LuaJIT是Lua 5.1的第三方即時編譯(JIT)實現,它將Lua字節碼動態編譯為機器碼,顯著提升了執行性能,在需要高性能腳本解決方案的場景中廣泛應用。[2]

參考文獻