什麼是Lua?
Lua 是一種健壯的、輕量級的、可嵌入的腳本語言,它支持多種編程方法,包括過程式、面向對象、函數式和數據驅動的編程。
由於 Lua 的主要關注點是腳本,它很少用作獨立的編程語言。相反,它被用作一種腳本語言,可以集成(嵌入)到主要用 C 和 C++ 編寫的其他程序中。它還通過第三方插件支持其他編程語言(NLua / KeraLua for .NET/C#)。
Lua 的流行用例包括:
- 作為視頻遊戲和遊戲引擎開發中的流行組件。例如,Warframe、魔獸世界和 CRYENGINE 都使用 Lua。
- 作為許多網絡程序中的編程語言,如 CISCO Systems、Nmap 和 ModSecurity。
- 作為 Adobe Lightroom 和 MySQL Workbench 等工業程序中的編程語言。
- 作為一個庫,開發人員可以與他們的程序集成以啟用腳本功能。
作為一種腳本語言,Lua 沒有自己的主要應用程序。相反,它專門充當主機應用程序的嵌入式部分。
Lua 是如何工作的
Lua 有兩個主要組件:
- Lua 解釋器
- Lua 虛擬機 (VM)
Lua 不像Python等其他語言那樣直接通過 Lua 文件進行解釋。相反,它使用 Lua 解釋器將 Lua 文件編譯為字節碼。Lua 解釋器是用 ANSI C 編寫的,使其具有高度的可移植性並且能夠在多種設備上運行。
通常,編譯是在運行時完成的。但是,有時可以在運行時之前完成以增加加載時間。然後 Lua 虛擬機會運行這個編譯後的字節碼。Lua 虛擬機基於寄存器的體系結構與實際的硬件體系結構非常相似,它將提高程序的整體性能。
Lua 的主要特點
那麼,Lua 有什麼了不起的呢?這些是定義特徵:
速度
Lua 被認為是解釋性腳本語言中最快的編程語言之一。特別是,在基準測試和實際場景中,Lua 可以比大多數其他編程語言更快地執行大型任務訂單。
為了獲得更高的速度,一個名為LuaJIT的 Lua 獨立實現使用即時編譯器,使 Lua 更快。
尺寸
Lua 的佔用空間比其他編程語言小得多,其完整的源代碼和文檔僅佔用 1.3 MB。帶有所有標準庫的 Lua 解釋器需要 278K,而完整的 Lua 庫只需要 466K。
這種小尺寸非常適合將 Lua 集成到多個平台中,從嵌入式設備到大型遊戲引擎,每個字節都是有價值的。
可移植性和可嵌入性
由於體積小,Lua 的便攜性幾乎是無限的;任何支持標準 C 編譯器的平台都可以開箱即用地運行 Lua。將 Lua 嵌入到另一種編程語言中時,Lua 的速度和大小成為巨大的優勢。這是因為它們可以幫助提高程序的速度,而不會妨礙任何現有的功能。
重要的是,Lua 不需要復雜的重寫即可與其他編程語言兼容。Lua 可以與 C、C++、Java、C# 等主要編程語言以及 Perl 和 Ruby 等其他腳本語言一起使用,進一步擴展了它的可用性。
簡單
Lua 設計簡單,但提供了強大的功能。Lua 的核心特性之一是元機制,它使開發人員能夠實現特性——而不是直接在語言本身中提供一堆特性。
Lua 還帶有增量垃圾收集,減少內存使用和實現複雜性。它的沙盒功能可用於隔離功能和資源。這增加了程序的安全性並為多任務處理提供了協程。
所有這些特性都帶有簡單的語法和易於理解的格式,因此任何人都可以輕鬆地拿起 Lua 並在他們的程序中使用它。
執照
Lua 是在 MIT 許可下分發的免費開源軟體。這意味著任何人都可以將 Lua 用於任何目的,而無需支付任何許可或版稅。
優點和缺點
像任何語言一樣,Lua 也有其優點和缺點。
Lua的優點
- 輕鬆的應用程序集成。它的高性能和小尺寸使得 Lua 很容易集成到應用程序中。
- 簡單的語法。相對簡單的語法結構,大約 20 個專用關鍵字,有助於輕鬆深入 Lua 編程。
- 靈活性。沒有標準庫,您可以自定義 Lua 以滿足任何需求。
- 跨平台兼容性和對標準 C 編譯器的支持使 Lua 幾乎可以在任何地方運行。
- Lua 中的動態變量允許在不定義類型的情況下定義變量,並且類型在運行時自動確定。
- 易於調試。簡單而強大的調試庫。
- 大量的文檔。使 Lua 項目快速啟動和運行以及活躍社區的綜合文檔。
Lua的缺點
- 有限的錯誤處理支持可能會導致更長的調試時間來識別 Lua 腳本中的確切錯誤。
- 所有變量都創建為全局變量(全局作用域),這可能導致變量賦值錯誤。
- 有限的模式匹配支持。
何時使用 Lua
作為一種沒有重大限制的腳本語言,您可以將 Lua 用於任何場景,從 Web 伺服器中的簡單後端腳本到復雜的遊戲開發。
Lua 在視頻遊戲開發中非常流行,因為它可以用於創建功能而不會影響整體性能,同時還可以將所有內容分開。
Lua 擅長的另一個領域是嵌入式編程,其中大小和性能是主要問題。Lua 可用於日常應用程序以擴展現有功能或創建新特性和功能。
一些使用 Lua 的流行遊戲、程序和服務包括 Dark Souls、Fable II、Garry's Mod、Wireshark、VLC、Apache 和 Nginx Web 伺服器。
Lua 與其他語言
Lua 與其他語言相比如何?
以下是高級通用編程語言 Python、高級面向對象 Java 和以 Web 為中心的 Javascript 與 Lua 之間的差異。
安裝 Lua
現在,讓我們看看如何在 Windows 中設置開發環境。首先,我們將安裝 Lua。
步驟1
導航到Lua.org 下載頁面。在這裡,我們將使用預編譯的二進製文件在 Windows 中安裝 Lua。因此,單擊“獲取二進制鏈接”,如下面的屏幕截圖所示。
第2步
在 LuaBinaries 頁面上單擊“下載”,您將被重定向到包含預編譯二進製文件列表的頁面。從該列表中選擇適當的版本。
我們將使用適用於 Windows 64 位的最新 Lua 版本。
這會將用戶引導至 SourceForge 頁面,將在該頁面下載二進製文件。
第 3 步
將下載的 Zip 文件移動到任何位置以永久存儲二進製文件。
在這裡,我們將使用“D:\Program Files\Lua”作為位置。移動 Zip 文件後,只需使用任何壓縮實用程序(例如:Windows Explorer、7zip、WinRar)提取其內容。
第4步
我們需要將 Lua 二進製文件的位置添加到系統 PATH 中,以便 Windows 可以從系統中的任何位置調用 Lua。
步驟 4.1。導航到環境變量。(打開 Windows 資源管理器,右鍵單擊此 PC,然後選擇屬性。)
步驟 4.2。在出現的屏幕中單擊“高級系統設置”,然後單擊“環境變量”。
步驟 4.3。在系統變量部分,將 Lua 可執行文件的位置添加為 Path 變量的新條目。
第 5 步
通過打開命令提示符或 PowerShell 窗口並輸入 Lua 命令(Lua 版本為 - lua54)來檢查系統是否識別 Lua。
搭建 Lua 開發環境
現在我們已經在系統中安裝了 Lua,我們需要一個開發環境來繼續編碼。為此,我們可以選擇:
- 像ZeroBrane Studio這樣的專用 Lua IDE
- 像VSCode這樣的通用 IDE
我們將為此實例使用 VSCode。
步驟1
讓我們在 VSCode 中創建一個名為“lua_basic.lua”的文件並將該文件保存在所需的位置。然後我們將在那裡鍵入一些打印語句,如下所示。
print ( "Hello Lua" ) print ( 10 * 10 ) print ( "我們將 10 乘以 10" )
第2步
我們的Lua程序在運行前需要編譯,所以我們需要創建一個Build Task。為此,請單擊終端菜單,然後單擊運行構建任務並選擇配置構建任務選項。/p>
(根據 VSCode 配置會有不同的構建任務模板。選擇“Create tasks.json from template”,最後選擇“Others”選項來定義自定義構建任務。)
運行構建任務
配置構建任務
從模板創建 tasks.json
其他
步驟 2.1。我們將添加以下代碼塊來配置任務。在該代碼塊中,我們定義了一個名為“Run Lua”的任務,它將使用命令“lua54”在 shell 上運行。該命令將當前文件作為參數並執行構建操作。
{ “版本” :“2.0.0” ,“任務” :[ { “標籤” :“運行Lua” ,“類型” :“shell” ,“命令” :“lua54” ,“args” :[ “${文件}" ], "組" : { "kind" : "build" , "isDefault" : true } } ] }
任務.json
第 3 步
再次打開“lua_basic.lua”文件。然後再次轉到“終端”並單擊“運行構建任務”或使用快捷鍵 Ctrl+Shift+B。
這將編譯文件並為我們提供輸出。
而已!現在我們有了一個可以工作的 Lua 開發環境,可以用來創建 Lua 腳本。我們可以使用官方的 Lua參考手冊來進一步探索 Lua 語言。
Lua 很強大
Lua 是一種強大的腳本語言,它具有無限的潛力,可以為多種平台上的任何程序添加功能以適應任何用例。