Home >> Blog >> 什麼是Lua?

什麼是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 有什麼了不起的呢?這些是定義特徵:

SQL 分組依據

速度

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 之間的差異。

SQL 分組依據

安裝 Lua

現在,讓我們看看如何在 Windows 中設置開發環境。首先,我們將安裝 Lua。

步驟1

導航到Lua.org 下載頁面。在這裡,我們將使用預編譯的二進製文件在 Windows 中安裝 Lua。因此,單擊“獲取二進制鏈接”,如下面的屏幕截圖所示。

SQL 分組依據

第2步

在 LuaBinaries 頁面上單擊“下載”,您將被重定向到包含預編譯二進製文件列表的頁面。從該列表中選擇適當的版本。

我們將使用適用於 Windows 64 位的最新 Lua 版本。

SQL 分組依據

這會將用戶引導至 SourceForge 頁面,將在該頁面下載二進製文件。

SQL 分組依據

第 3 步

將下載的 Zip 文件移動到任何位置以永久存儲二進製文件。

在這裡,我們將使用“D:\Program Files\Lua”作為位置。移動 Zip 文件後,只需使用任何壓縮實用程序(例如:Windows Explorer、7zip、WinRar)提取其內容。

SQL 分組依據

第4步

我們需要將 Lua 二進製文件的位置添加到系統 PATH 中,以便 Windows 可以從系統中的任何位置調用 Lua。

步驟 4.1。導航到環境變量。(打開 Windows 資源管理器,右鍵單擊此 PC,然後選擇屬性。)

SQL 分組依據

步驟 4.2。在出現的屏幕中單擊“高級系統設置”,然後單擊“環境變量”。

SQL 分組依據

步驟 4.3。在系統變量部分,將 Lua 可執行文件的位置添加為 Path 變量的新條目。

SQL 分組依據

SQL 分組依據

第 5 步

通過打開命令提示符或 PowerShell 窗口並輸入 Lua 命令(Lua 版本為 - lua54)來檢查系統是否識別 Lua。

SQL 分組依據

搭建 Lua 開發環境

現在我們已經在系統中安裝了 Lua,我們需要一個開發環境來繼續編碼。為此,我們可以選擇:

  • 像ZeroBrane Studio這樣的專用 Lua IDE
  • 像VSCode這樣的通用 IDE

我們將為此實例使用 VSCode。

步驟1

讓我們在 VSCode 中創建一個名為“lua_basic.lua”的文件並將該文件保存在所需的位置。然後我們將在那裡鍵入一些打印語句,如下所示。

print ( "Hello Lua" ) print ( 10 * 10 ) print ( "我們將 10 乘以 10" )

SQL 分組依據

第2步

我們的Lua程序在運行前需要編譯,所以我們需要創建一個Build Task。為此,請單擊終端菜單,然後單擊運行構建任務並選擇配置構建任務選項。/p>

(根據 VSCode 配置會有不同的構建任務模板。選擇“Create tasks.json from template”,最後選擇“Others”選項來定義自定義構建任務。)

運行構建任務

SQL 分組依據

配置構建任務

SQL 分組依據

從模板創建 tasks.json

SQL 分組依據

其他

SQL 分組依據

步驟 2.1。我們將添加以下代碼塊來配置任務。在該代碼塊中,我們定義了一個名為“Run Lua”的任務,它將使用命令“lua54”在 shell 上運行。該命令將當前文件作為參數並執行構建操作。

{ “版本” :“2.0.0” ,“任務” :[ { “標籤” :“運行Lua” ,“類型” :“shell” ,“命令” :“lua54” ,“args” :[ “${文件}" ], "組" : { "kind" : "build" , "isDefault" : true } } ] }

任務.json

SQL 分組依據

第 3 步

再次打開“lua_basic.lua”文件。然後再次轉到“終端”並單擊“運行構建任務”或使用快捷鍵 Ctrl+Shift+B。

SQL 分組依據

這將編譯文件並為我們提供輸出。

SQL 分組依據

而已!現在我們有了一個可以工作的 Lua 開發環境,可以用來創建 Lua 腳本。我們可以使用官方的 Lua參考手冊來進一步探索 Lua 語言。

Lua 很強大

Lua 是一種強大的腳本語言,它具有無限的潛力,可以為多種平台上的任何程序添加功能以適應任何用例。