Lua là một trong những ngôn ngữ thiết kế được viết dựa vào C. Được phát mình vào năm 1993 bởi Roberto Ierusalimschy, Luiz Henrique de Figueiredo và Waldemar Cele, ngay từ ban đầu, đích hướng đến của Lua là thay đổi một thứ ngữ điệu lập trình solo giản, gọn nhẹ, và có thể dễ dàng được tích hòa hợp vào những chương trình đc viết bằng những loại ngôn ngữ phổ cập khác như C xuất xắc Java. Điều này mang về cho Lua nhiều lợi thế : Không phụ thuộc vào vào nền tảng gốc rễ phần cứng, cấu trúc linh động, không nhiều dư thừa, hoàn toàn có thể dễ dàng demo hay debug. Lua thực hiện được điều này nhờ có môi trường thiên nhiên an toàn, khả năng auto quản lí cỗ nhớ, cùng nhiều phương pháp để xử lý string tương tự như những một số loại data không giống có dung lượng động.
Bạn đang xem: Lua là gì? đặc trưng của ngôn ngữ lua là gì?
Lua là một trong ngôn ngữ được sử dụng nhiều, và đã được kiểm chứng
Lua đã được dùng trong tương đối nhiều các ứng dụng công nghiệp ( ví như Adobe"s Photoshop Lightroom ), trong các hệ thống nhúng ( ví dụ như Ginga middleware dùng trong các hệ thống TV số sinh sống Brazil ) , hay làm game ( ví dụ như World of Warcarft addons hay Angry Birds ). Bây giờ Lua được đánh giá là ngôn ngữ kịch bản ( scripting language ) hàng đầu sử dụng trong game. Lua được đông đảo cộng đồng ghi nhận, với có hệ thống documentation khá đầy đủ và đưa ra tiết.
Lua cực kỳ nhanh
Lua rất lừng danh về tốc độ xử lí, là chuẩn chỉnh mực để các loại ngôn ngũ kịch phiên bản khác phía tới. Năng lực thực thi của Lua đã được kiểm hội chứng qua rất nhiều bài thử nghiệm ( benchmark ), cũng như trong môi trường thiên nhiên thực tế . Một trong những phần đáng kể của những ứng dụng lớn bây chừ đều được viết bằng Lua
Lua is portable
Lua được phân phối trong số gói nhỏ tuổi (small package) và được build tự do trong toàn bộ những nền tảng có bộ biên dịch C chuẩn. Lua rất có thể chạy trên tất cả các căn nguyên Unix với Windows, trên các nền tảng cầm tay ( Android, iOS, BREW, Symbian, Windows Phone), trên các vi up load nhứng ( như ARM và Rabbit, cho những ứng dụng như Lego MindStorms)
Lua is embeddable
Lua là 1 trong những loại ngôn từ rất nhanh và nhỏ gọn, rất có thể dễ dàng được nhúng vào trong số ứng dụng khác nhau. Với khối hệ thống API đơn giản và được documented tốt, ta hoàn toàn có thể dễ dàng tích vừa lòng Lua vào trong các hệ thống viết bằng những loại ngôn từ khác. Có thể dễ dàng sử dụng các thư viện của các ngôn ngữ không giống trong Lua, cũng như dễ dàng dùng những thư viện Lua trong số ứng dụng viết bằng ngôn ngữ khác, không những C , C++, Java, ... Mà kể cả những loại ngôn từ kịch bản khác như Perl tốt Ruby.
Lua is powerful (but simple)
Một quan niệm cơ bản trong Lua, kia là cung ứng những phương thức bao quát ( meta-mechanisms ) để tiến hành những kĩ năng ( features ), cầm vì cung cấp trực tiếp phần nhiều tính đó. Ví dụ, mặc dù Lua không phải là ngôn từ hướng đối tượng người sử dụng thuần túy, núm vào đó , Lua cung cấp khái niệm metatable, và phụ thuộc vào đây, ta có thể implement class và kế thừa trong Lua. Đặc điểm cơ bạn dạng này của Lua, góp cho ngữ điệu này nhỏ tuổi gọn về mặt cấu trúc, trong lúc vẫn rất có thể dễ dàng được extend thanh lịch những khối hệ thống khác.
Lua rất nhỏ tuổi gọn
Thêm Lua vào một trong những ứng dụng không làm cho phình to áp dụng đó. File tarball của Lua 5.3.1, trong đó có cất cả source code cùng documentation, có dung lượng 276k lúc nén với 1.1M khi giải nén. Source code của Lua chúa khoảng tầm 23000 chiếc code C. Trong một khối hệ thống Linux 64-bit, cỗ biên dịch Lua built với toàn bộ các thư viện Lua chuẩn chiếm khoảng chừng 242kb , cùng thư viện Lua thì chiếm khoảng chừng 414Kb.
Lua is free
Lua là ứng dụng mã nguồn mở, được bày bán dưới license MIT. Lua có thể được cần sử dụng cho tất cả các mục đích, tất cả mục đích thương mại và vẫn trọn vẹn miễn phí.
3 Making your first Lua programTrong phần này, ta sẽ cùng nhau mày mò về một ứng dụng trong thực tiễn đang khá thông dụng của Lua, kia là dùng trong làm cho game. Để làm cho quen, ta hãy cùng thi công một vận dụng thuộc một số loại cơ bạn dạng nhất, thuộc viết một Addons đơn giản trong game World of Warcraft.
Cài đặt Lua
Về cơ phiên bản thì việc thiết lập Lua là rất đơn giản. Để bao gồm thể ban đầu bắt tay vào lập trình Lua, bạn chỉ cần có :
Thứ duy nhất : bộ thông dịch Lua ( Lua interpreter ) : Một chương trình nhỏ, nơi chúng ta cũng có thể gõ trực tiếp những lệnh của Lua và triển khai chúng ngay lập tức lập tức. Lua interpreter sẽ dừng thực hiện mọt file Lua ngay trong khi nó phát hiện lỗi trong file kia .Thứ nhì : bộ biên dịch Lua (Lua complier) : khi ta mong muốn extend Lua mang lại một ứng dụng/ ngôn từ khác, ta sẽ cần được có một cỗ SDK ( Software Development Kit ), trong những số ấy có bộ biên dịch (complier) cân xứng với Lua.Thứ tía : Cuối cùng, ta sẽ rất cần được có một bộ text editor để ban đầu thực hiện câu hỏi viết mã code Lua. Hãy sử dụng bất kể text editor làm sao mà chúng ta cảm thấy thân quen thuộc, toàn bộ đều hoàn toàn có thể viết Lua, trường đoản cú Notepad tốt Vim xuất xắc Sublime ...Để tải về Lua trên Linux, chạy đoạn lệnh sau trên hành lang cửa số command
$ wget http://www.lua.org/ftp/lua-5.2.3.tar.gz$ tar zxf lua-5.2.3.tar.gz$ cd lua-5.2.3$ make linux testTa rất có thể thấy trong những số đó có một file helloWorld.lua với ngôn từ như sau
print("Hello World!")để demo file này, ta rất có thể thử
$lua helloWorldsẽ cho ra output
World of Warcraft Addons
Như vẫn nói ngơi nghỉ trên, một trong những những điểm lưu ý chính của Lua là tính gọn nhẹ và rất có thể dễ dàng được nhúng hay extend tới những ứng dụng / ngữ điệu khác. Và trong những ứng dụng phổ cập của Lua là trong thiết kế game. Một ví dụ dễ dàng và đơn giản nhất là ta hãy thuộc viết một Addons đơn giản cho trò chơi World of Warcraft, thực hiện Lua.
Trước tiên, ta nên biết rằng Lua có thể tương tác với các ứng dụng không giống nhau, nhưng mà mỗi áp dụng có luật lệ riêng của chính nó trong việc cửa hàng với Lua, nên trước khi bắt đầu, ta cần phải nắm được nguyên tắc đó. Trong trường hợp ví dụ này, WoW yêu ước :
Mỗi tiện ích mở rộng có một folder riêng, bên trong /Interface/Addons .Ví dụ ta sẽ tạo nên thư mục /Interface/Addons/HelloWorldTrong folder đó gồm một file đuôi .toc, thuộc tên với tên thư mục, trong đó có chứa nội dung của Addon. Trong trường vừa lòng này, ta sẽ tạo file HelloWorld.tocFile .tocVề cơ bản thì một file .toc đã là khu vực client chú ý tới thứ nhất khi chạm với Addon của ta. Format của một tệp tin .toc thông thường sẽ có dạng ,ban đầu là khai báo thông tin directives , bao gồm những tin tức như version Interface ( bắt buộc ) , tên addons, tin tức về tác giả, khai báo các biến lưu trữ trên local , note ... Những directives này được khai báo bởi tiền tố ## sống đầu dòng. Tiếp theo , phần lớn dòng ko có tiền tố này, sẽ được client đọc là gần như file rất cần phải load hay triển khai khi chạy Addons. Mang sử ta viết một tệp tin HelloWorld.lua cho addons này, file HelloWorld.toc của ta sẽ có được dạng:
## Interface: 50001## Title: Hello World## Author: Joe Savage## Version: 0.1HelloWorld.luaFile .luaNếu coi tệp tin .toc là size xương của Addons, thì tệp tin .lua sẽ là phần thịt, script vày ta viết sẽ hoàn toàn nằm trong những file này. Nên chú ý là vào trường hợp này, ta sẽ viết một Addon cho WoW, nên ngoài những function cơ bản của Lua, ta còn hoàn toàn có thể sử dụng phần lớn function bởi vì WoW cung cấp. Ví dụ, khi hy vọng in ra màn hình, ta có thể dùng function print nhằm in một quãng string ở hành lang cửa số chat, hoặc sử dụng message để hiện ra dưới dạng message box.
Xem thêm: Hàm Số Bậc Nhất Và Các Bài Tập Hàm Số Lớp 9, Chuyên Đề: Hàm Số Và Đồ Thị
message("Hello World!")Đơn giản bởi vậy là ta đã gồm trong tay một Addon. Từ bỏ giờ, mỗi khi login vào game, ta đã có thể thấy một cửa sổ thông báo hiện ra

Nhưng nếu như chỉ cố kỉnh này thì quá solo giản, hãy thử tương tác một ít với khối hệ thống cho ra dáng một Addon.
Listening lớn eventĐầu tiên ta phải ghi nhận về quan niệm "Frame" vào WoW Addon. Đây là một kết cấu cơ bản, giống như như customtable của Lua. Trong một frame của WoW, ta hoàn toàn có thể bắt được các sự kiện, tạo các cửa sổ ... Hay những hành vi tùy thay đổi khác. Trước tiên, trong file HelloWorld.lua , ta hãy khai báo một Frame, có scope là local nhằm tránh các ảnh hưởng ko lương trước rất có thể có
local Congrats_EventFrame = CreateFrame("Frame")Một Frame vẫn gắn với việc kiện như thế nào , qua khai báo RegisterEvent, với thực hiện hành vi như thay nào, qua khai báo SetScript. Trong trường thích hợp này, ta đang muốn bắt sự kiện cấp độ up, cùng khi sự kiện đó xẩy ra , thì hiện nay ra thông báo chúc mừng. Ta hoàn toàn có thể dùng
local Congrats_EventFrame = CreateFrame("Frame")Congrats_EventFrame:RegisterEvent("PLAYER_LEVEL_UP")Congrats_EventFrame:SetScript("OnEvent",function(self, event, ...)--Event handling code goes hereend)---- to lớn be continued ----