Newbie Club»Thế Giới Lập Trình Viên»Các ngôn ngữ cơ bản»Lua Script »NGHIÊN CỨU NGÔN NGỮ LẬP TRÌNH LUA


Thông điệp 1 trong tổng số 1 trang>


Admin

1 NGHIÊN CỨU NGÔN NGỮ LẬP TRÌNH LUA Sun Apr 03, 2011 8:53 am


Bên dưới là những kết quả nghiên cứu ngôn ngữ lập trình LUA. Gồm những nội dung chính sau:- Đặc trưng của ngôn ngữ lập trình LUA.- So sánh khả năng biểu diễn với các ngôn ngữ lập trình khác cùng họ scripting.- So sánh hiệu năng với các ngôn ngữ lập trình khác cùng họ scripting.Nội dung trên được trích ra từ các chương 2,3,4 của khoá luận tốt nghiệp CNTT của 2 tác giả : Võ Mai Linh và Nguyễn Thị Sáng.-------------------------Xin mời các bạn cùng tham khảo.-------------------------Chương 2: ĐẶC TRƯNG CỦA NGÔN NGỮ LUATrong chương này chúng tôi sẽ giới thiệu các đặc tính cơ bản của ngôn ngữ Lua bao gồm các đặc trưng:2.1.Tính mở rộng:-Người ta không chỉ quan tâm đến LUA như một ngôn ngữ, mà còn như là một công cụ dùng để xây dựng một ngôn ngữ.-Những chương trình viết bằng LUA được thiết kế từ đầu, sau này có thể được mở rộng không chỉ bằng chính ngôn ngữ LUA mà còn cả ngôn ngữ C.-LUA dễ dàng giao tiếp với ngôn ngữ C/C++ và những ngôn ngữ khác như: Fortran, Java, Smalltalk, Ada, và thậm chí với những ngôn ngữ scripting khác.

Bạn đang xem: Ngôn ngữ lập trình lua

2.2.Tính đơn giản:-LUA là một ngôn ngữ đơn giản và nhỏ. Nó có rất ít các khái niệm, kiểu dữ liệu … nhưng lại rất mạnh.-Tính đơn giản làm cho LUA rất dễ học và dễ tích hợp vào những chương trình lớn khác.-Một chương trình đầy đủ của LUA bao gồm: mã nguồn, hướng dẫn, cộng với một vài thư viện nhị phân tương ứng cho platforms, có thể sắp xếp gọn trong một đĩa mềm.2.3.Tính hiệu quả:-Chương trình được viết bằng LUA thực thi khá nhanh.-LUA được đánh giá như một trong những ngôn ngữ nhanh nhất trong lĩnh vực của những ngôn ngữ scripting.2.4.Tính khả chuyển:-LUA không chỉ chạy tốt trên Windows và Unix. LUA còn chạy tốt trên mọi platforms mà chúng ta biết đến như : NextStep, OS/2, PlayStation II (Sony), Mac OS-9 and OS X, BeOS, MS-DOS, IBM mainframes, EPOC, PalmOS, MCF5206eLITE Evaluation Board, RISC OS.-Với cùng một mã nguồn có thể chạy trên nhiều môi trường khác nhau. Bởi vì LUA được cài đặt theo chuẩn ANSI C nên nếu có một ANSI compiler thì có thể compile LUA.2.5.Tính “đa dạng thức”:-LUA có cấu trúc đơn giản nhưng giải quyết được nhiều vấn đề phức tạp khác nhau, trong khi những ngôn ngữ khác có cấu trúc phức tạp nhưng chỉ giải quyết một vấn đề chuyên biệt.-LUA không có tính kế thừa nhưng cho phép tạo ra mối quan hệ đó với metatable (*).-Cho phép người lập trình tạo namespaces, class và những đặc tính liên quan khác sử dụng sự thi hành của table.2.6.Thư viện dễ thay đổi:-Có thể mở rộng các kiểu dữ liệu và các hàm của thư viện.-Có bộ nhớ tự động nên không cần quan tâm ai là người cấp phát và giải phóng bộ nhớ hay là tràn bộ nhớ.-Những hàm đặc biệt cho phép sự thể hiện của các tham số ở mức độ cao nên có thể tạo các hàm có nhiều chức năng hơn.-Khi ghi chương trình LUA vào vi xử lý, do phần cứng bị hạn hẹp ta có thể vào trong thư viện của LUA để loại bỏ những hàm không cần thiết. 2.7.Tính tích hợp:-Sử dụng LUA để tích hợp vào trong chương trình ứng dụng của mình.-Sử dụng trong CGILUA để xây dựng một trang web động.-Sử dụng LuaOrb, cho việc truy cập những đối tượng CORBA.-Sử dụng LUA-C API để tạo ra những hàm mới, kiểu dữ liệu mới, thay đổi cách hoạt động của một vài hệ thống ngôn ngữ, cấu hình LUA cho những phân vùng đặc biệt của chúng.

Xem thêm: Các Dạng Toán Cực Trị Của Hàm Số Nâng Cao Về Cực Trị Của Hàm Số

2.8.Table là kiểu dữ liệu “mạnh”:-Tạo các key trong table rất đơn giản-Thay đổi cấu trúc và chỉ mục của table đã được tạo trước.-Có thể sử dụng table như 1 mảng-Sử dụng vòng lặp trong table-Viết chương trình hướng đối tượng với table.-Xây dựng những cấu trúc dữ liệu từ table.-Những phương thức được định nghĩa sẳn trên table: oTable.insert: thêm một phần tử vào table-Ví dụ:Code:T = {} table.insert(T, “a”) table.insert(T, “b”) table.insert(T, “c”) print(CommaSeparate(T))a, b, coTable.sort : sắp xếp các phần tử trong 1 table-Ví dụ sử dụng chức năng sort :Code:Names = {“Scarlatti”, “Telemann”, “Corelli”, “Purcell”, “Vivaldi”, “Handel”, “Bach”} table.sort(Names) for I, Name in ipairs(Names) do print(I, Name) end
oTable.concat: nối các phần tử trong table thành một chuổi.-Ví dụ :Code:print(table.concat({“a”, “bc”, “d”}))AbcdoTable.remove: Remove một phần tử trong table.-Ví dụ:Code:T = {} table.insert(T, “a”) table.insert(T, “b”) table.insert(T, “c”) print(CommaSeparate(T)) a, b, c print(table.remove(T)) c print(CommaSeparate(T)) a, b print(table.remove(T)) b print(CommaSeparate(T)) a print(table.remove(T)) a-- T is now empty again:print(#T)oTable.maxn: tìm trên mỗi cặp key – value trong một table và trả về key tương ứng với value lớn nhất hoặc trả về 0 nếu value không phải là số dương.-Ví dụ:Code:print(table.maxn({“a”, nil, nil, “c”})) 4 print(table.maxn({<1.5> = true})) 1.5 print(table.maxn({<ì1.5î> = true})) 02.9.Mở rộng các xử lý trên table bằng Metatable -Mỗi table có thể là một metatable.-Mỗi table có 1 cặp key-value. Mỗi metatable có 1 cặp event-metamethod. Một event ứng với 1 key trong table và metamethod ứng với 1 value trong table. Mỗi metatable có thể có 1 hoặc nhiều table và ta có thể tính toán được trên metatable dựa vào metamethod.-Metamethod giống như 1 hàm tính toán trong metatable.-Ví dụ, sử dụng metatable chúng ta có thể định nghĩa trong ứng dụng Lua việc tính toán biểu thức a+b như thế nào, trong đó a và b là các table. -Mỗi một table có thể là một metatable của bất kỳ một table khác. Một nhóm các table có liên quan với nhau có thể chia sẻ một metatable (cái mà diễn tả xử lý chung của chúng).2.10.Mở rộng với Function:-Khai báo hai biến cùng tên trong cùng một khối lệnh. Ví dụ:Code:function ScopeTest3(Lcl) for I = 1, 5 do Lcl = Lcl .. "a" print(Lcl) local Lcl = "" Lcl = Lcl .. "z" print(Lcl) end print("Kết quả sau vòng lặp.") print(Lcl) end ScopeTest3("")Kết quả: azaazaaazaaaazaaaaazKết quả sau vòng lặp.aaaaa-Định nghĩa function như gán giá trịCode:DoNothing1, DoNothing2 = function() end, function() end print(DoNothing1, DoNothing2) print(DoNothing1 == DoNothing2)-- Kết quả: function: 011540E0 function: 01154080false-Định nghĩa và gọi 1 hàm nặc danh (anonymous function)(function(A, B)print(A + B)end)(2, 3)--Kết quả: 5-Định nghĩa và gọi hàm cục bộCode: do local LclAverage = function(Num1, Num2) return (Num1 + Num2) / 2 end print(LclAverage(10, 20)) end
*

Thông điệp 1 trong tổng số 1 trang>


Newbie Club»Thế Giới Lập Trình Viên»Các ngôn ngữ cơ bản»Lua Script »NGHIÊN CỨU NGÔN NGỮ LẬP TRÌNH LUA


Chuyển đến:

Chọn Diễn Đàn||--Thông Tin Diễn Đàn||--Thông báo từ BQT|||--Party - Sự Kiện|||--Khen thưởng - Kỉ luật||||--Tuyển MOD - BQT||--Góp ý - Thắc mắc||--Thế Giới Lập Trình Viên||--Các ngôn ngữ cơ bản|||--Visual Basic 6.0|||--C ASCII/ C++|||--Delphi - Orther|||--Pascal|||--Lua Script||||--Hàm Mới||||||--AutoIT||||--Các ngôn ngữ nâng cao và .NET|||--Visual Basic .NET|||--Visual C++|||--Visual C#|||--Java||||--Lập trình web|||--Html - CSS||||--CLB Webmaster||--Thảo luận||--Thủ Thuật - Kinh Nghiệm||--Công cụ cho webmaster||--SEO, Google Optimization||--Thư Viện Mã Nguồn||--vBulletin|||--VBB 3x|||--VBB 4x||||--PHP Script||--ASP Script||--NET Script||--Forumotion||--Skin||--Temp + CSS||--Hacking & Bảo Mật||--Virus - Trojan ...||--Thảo Luận Xâm Nhập||--Thảo Luận Bảo Mật||--Ebook - Tài Liệu - Web Hay||--Công Cụ||--Game||--Đế Vương - Zing Me||--AOE I - Đế Chế 1||--Download||--Software||--Thủ Thuật||--Máy Tính||--Internet||--Giải Trí||--Funny||--Thơ văn||--Ảo Thuật||--Ngoài Lề|--Bãi Rác|--Quảng Cáo