Tìm hiều về Lua và ứng dụng

Chúng tôi vui mừng chia sẻ kiến thức về từ khóa Lua la gi để tối ưu hóa nội dung trang web và tiếp thị trực tuyến. Bài viết cung cấp phương pháp tìm kiếm, phân tích từ khóa và chiến lược hiệu quả. Cảm ơn sự quan tâm và hãy tiếp tục theo dõi để cập nhật kiến thức mới.

Lua là một tiếng nói lập trình được viết dựa trên 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 sơ, đích nhắm tới của Lua là trở thành một thứ tiếng nói lập trình đơn giản, gọn nhẹ, và có thể dễ dàng được tích hợp vào các lớp học đc viết bằng các loại tiếng nói phổ quát khác ví như C hay Java. Điều này mang lại cho Lua nhiều lợi thế : Không phụ thuộc vào nền tảng phần cứng, cấu trúc linh động, ít dư thừa, có thể dễ dàng test hay debug. Lua thực hiện được điều này nhờ có môi trường xung quanh an toàn, khả năng tự động hóa quản lí bộ nhớ, và nhiều dụng cụ để xử lí string cũng như những loại data khác có dung tích động.

Bạn Đang Xem: Tìm hiều về Lua và ứng dụng

Lua là một tiếng nói được sử dụng nhiều, và được kiểm chứng

Lua đã được sử dụng trong rất nhiều các ứng dụng công nghiệp ( ví dụ như Adobe’s Photoshop Lightroom ), trong các khối hệ thống nhúng ( ví dụ như Ginga middleware dùng trong các khối hệ thống TV số ở Brazil ) , hay làm game ( ví dụ như World of Warcarft addons hay Angry Birds ). HIện tại Lua được thẩm định là tiếng nói 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à có khối hệ thống documentation khá đầy đủ và rõ ràng.

Lua rất nhanh

Lua rất nổi tiếng về tốc độ xử lí, là chuẩn mực để các loại ngôn ngũ kịch bản khác hướng tới. Khả thi của Lua đã được kiểm chứng qua rất nhiều bài test ( benchmark ), cũng như trong môi trường xung quanh thực tế . Một phần đáng kể của khá nhiều ứng dụng lớn hiện nay đều đc viết bằng Lua

Lua is portable

Lua được phân phối trong các gói nhỏ (small package) và được build độc lập trong tất cả những nền tảng có bộ biên dịch C chuẩn. Lua có thể chạy trên tất cả những nền tảng Unix và Windows, trên các nền tảng di động ( Android, iOS, BREW, Symbian, Windows Phone), trên các vi xử lí nhứng ( như ARM và Rabbit, cho những ứng dụng như Lego MindStorms)

Lua is embeddable

Lua là một loại tiếng nói rất nhanh và nhỏ gọn, có thể dễ dàng được nhúng vào trong các ứng dụng khác nhau. Với khối hệ thống API đơn giản và được documented tốt, ta có thể dễ dàng tích hợp Lua vào trong các khối hệ thống viết bằng các loại tiếng nói khác. Có thể dễ dàng sử dụng các thư viện của khá nhiều tiếng nói khác trong Lua, cũng như dễ dàng dùng các thư viện Lua trong các ứng dụng viết bằng tiếng nói khác, không chỉ C , C++, Java, … mà kể cả những loại tiếng nói kịch bản khác ví như Perl hay Ruby.

Lua is powerful (but simple)

Một khái niệm cơ bản trong Lua, đó là cung cấp những phương thức tổng quát ( meta-mechanisms ) để thực hiện những tính năng ( features ), thay vì cung cấp trực tiếp những tính đó. Ví dụ, mặc dù Lua không phải là tiếng nói hướng đối tượng người tiêu dùng thuần túy, thay vào đó , Lua cung cấp khái niệm metatable, và dựa vào đây, ta có thể implement class và thừa hưởng trong Lua. Đặc điểm cơ bản này của Lua, hỗ trợ cho tiếng nói này nhỏ gọn về mặt cấu trúc, trong những khi vẫn có thể dễ dàng được extend sang những khối hệ thống khác.

Lua rất nhỏ gọn

Thêm Lua vào một trong những ứng dụng không làm phình to ứng dụng đó. File tarball của Lua 5.3.1, trong đó có chứa cả source code và documentation, có dung tích 276k khi nén và 1.1M khi giải nén. Source code của Lua chúa khoảng chừng 23000 dòng code C. Trong một khối hệ thống Linux 64-bit, bộ biên dịch Lua built với tất cả những thư viện Lua chuẩn chiếm khoảng chừng 242kb , và thư viện Lua thì chiếm khoảng chừng 414Kb.

Lua is không lấy phí

Lua là phần mềm mã nguồn mở, được phân phối dưới license MIT. Lua có thể được sử dụng cho tất cả những mục tiêu, kể cả mục tiêu thương nghiệp và vẫn hoàn toàn miễn phí.

Trong phần này, ta sẽ cùng nhau tìm hiểu về một ứng dụng thực tiễn đang khá phổ quát của Lua, đó là dùng trong làm game. Để làm quen, ta hãy cùng xây dựng một ứng dụng thuộc loại cơ bản nhất, cùng viết một Addons đơn giản trong game World of Warcraft.

Thiết lập Lua

Về cơ bản thì việc setup Lua là rất đơn giản. Để sở hữu thể khai mạc bắt tay vào lập trình Lua, bạn chỉ việc có :

  • Thứ nhất : Bộ thông dịch Lua ( Lua interpreter ) : Một lớp học nhỏ, nơi chúng ta cũng có thể gõ trực tiếp các lệnh của Lua và thực thi chúng ngay ngay thức thì. Lua interpreter sẽ dừng thực thi mọt file Lua ngay lúc nó gặp lỗi trong file đó .
  • Thứ hai : Bộ biên dịch Lua (Lua complier) : Khi ta muốn extend Lua đến một ứng dụng/ tiếng nói khác, ta sẽ cần phải có một bộ SDK ( Software Development Kit ), trong đó có bộ biên dịch (complier) tương thích với Lua.
  • Thứ ba : Cuối cùng, ta sẽ cần phải có một bộ text editor để khai mạc thực hiện việc viết mã code Lua. Hãy sử dụng bất kì text editor nào mà bạn cảm thấy thân thuộc, tất cả đều phải có thể viết Lua, từ Notepad hay Vim hay Sublime …

Xem Thêm : Cash24 là gì? Cash24 lừa đảo không? Có nên vay tiền nhanh tại Cash24 không?

Để 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 test

Ta có thể thấy trong đó có một file helloWorld.lua với nội dung như sau

print(“Hello World!”)

để chạy thử file này, ta có thể thử

$lua helloWorld

sẽ cho ra output

Hello World!

Để xem thêm về cú pháp cụ thể của Lua, ta có thể tham khảo thêm Lua Documentation

World of Warcraft Addons

Như đã nói ở trên, một trong những đặc điểm chính của Lua là tính gọn nhẹ và có thể dễ dàng được nhúng hay extend tới các ứng dụng / tiếng nói khác. Và một trong những ứng dụng phổ quát của Lua là trong lập trình game. Một ví dụ đơn giản nhất là ta hãy cùng viết một Addons đơn giản cho game World of Warcraft, sử dụng Lua.

Trước tiên, ta nên biết rằng Lua có thể tương tác với những ứng dụng khác nhau, nhưng mỗi ứng dụng có quy tắc riêng của nó trong việc tương tác với Lua, nên trước lúc khai mạc, ta cần phải nắm được quy tắc đó. Trong trường hợp cụ thể này, WoW yêu cầu :

  • Mỗi Addons có một thư mục riêng, nằm trong /Interface/Addons .Ví dụ ta sẽ tạo thư mục /Interface/Addons/HelloWorld
  • Trong thư mục đó có một file đuôi .toc, cùng tên với tên thư mục, trong đó có chứa nội dung của Addon. Trong trường hợp này, ta sẽ tạo file HelloWorld.toc

File .toc

Xem Thêm : KHÁI NIỆM BIA CRAFT (CRAFTBEER) VÀ BIA THỦ CÔNG LÀ GÌ?

Về cơ bản thì một file .toc sẽ là nơi client nhìn tới trước hết khi chạm tới Addon của ta. Format của một file .toc thường có dạng ,ban sơ là khai báo thông tin directives , gồm có những thông tin như version Interface ( bắt buộc ) , tên addons, thông tin về tác giả, khai báo các biến lưu trữ trên local , note … Các directives này được khai báo bằng tiền tố ## ở đầu dòng. Tiếp theo , những dòng ko có tiền tố này, sẽ tiến hành client hiểu là những file cần được load hay thực thi khi chạy Addons. Giả sử ta viết một file HelloWorld.lua cho Addons này, file HelloWorld.toc của ta sẽ sở hữu được dạng:

## Interface: 50001 ## Title: Hello World ## Author: Joe Savage ## Version: 0.1 HelloWorld.lua

File .lua

Nếu coi file .toc là khuông xương của Addons, thì file .lua sẽ là phần thịt, script do ta viết sẽ hoàn toàn nằm trong những file này. Nên lưu ý là trong trường hợp này, ta đang viết một Addon cho WoW, nên ngoài những function cơ bản của Lua, ta còn tồn tại thể sử dụng những function do WoW cung cấp. Ví dụ, khi muốn in ra màn hình hiển thị, ta có thể dùng function print để in một đoạn string ở hành lang cửa số chat, hoặc dùng message để hiện ra dưới dạng message box.

message(‘Hello World!’)

Đơn giản như vậy là ta đã có trong tay một Addon. Từ giờ, mỗi lúc login vào game, ta đã có thể thấy một hành lang cửa số thông tin hiện ra WoW_HelloWorld.jpg

Nhưng nếu chỉ thế này thì quá đơn giản, hãy thử tương tác một tí với khối hệ thống cho ra phết một Addon.

Listening to sự kiện

Khi viết một lớp học Lua tương tác với một ứng dụng khác, ta nên tìm hiểu xem, ứng dụng đích cung cấp cho ta những gì. Trong ví dụ này, Sự kiện API của WoW cung cấp cho ta list những sự kiện (sự kiện) vô cùng phong phú, đủ để bắt hồ hết những tình huống xẩy ra trong game. Bạn cũng có thể xem thêm rõ ràng tại Wow Sự kiện list . Để làm một ví dụ đơn giản, giả sử ta muốn viết một Addon hiển thị message chúc mừng mỗi lúc người chơi thăng cấp. Tra trong sự kiện list, ta có thể thấy sự kiện PLAYER_LEVEL_UP . Hãy khai mạc viết lại Addon của ta.

Trước tiên ta phải ghi nhận về khái niệm ‘Frame’ trong WoW Addon. Đây là một cấu trúc cơ bản, tương tự như customtable của Lua. Trong một frame của WoW, ta có thể bắt được những sự kiện, tạo các hành lang cửa số … hay những hành động tùy biến khác. Trước tiên, trong file HelloWorld.lua , ta hãy khai báo một Frame, có scope là local để tránh các tác động ảnh hưởng ko lương trước có thể có

local Congrats_EventFrame = CreateFrame(“Frame”)

Một Frame sẽ gắn với sự kiện nào , qua khai báo RegisterEvent, và thực hiện hành động thế nào, qua khai báo SetScript. Trong trường hợp này, ta đang muốn bắt sự kiện level up, và khi sự kiện đó xẩy ra , thì hiện ra thông tin chúc mừng. Ta có thể dùng

local Congrats_EventFrame = CreateFrame(“Frame”) Congrats_EventFrame:RegisterEvent(“PLAYER_LEVEL_UP”) Congrats_EventFrame:SetScript(“OnEvent”, function(self, sự kiện, …) -Sự kiện handling code goes here end)

– To be continued –

You May Also Like

About the Author: v1000