Lua đứng đầu và vai phía trên các lựa chọn khác.
... hỗ trợ thao tác chuỗi tốt nhất khi dễ dàng nhúng?
Lua được được thiết kế để được nhúng vào C; API rõ ràng và dễ sử dụng; tài liệu là tuyệt vời.
Một số phản hồi khác đã loại bỏ khả năng chuỗi của Lua. Tôi nghĩ rằng họ đang đánh giá thấp Lua. Khả năng chuỗi của Lua thực sự tìm thấy một điểm ngọt giữa "chỉ ghép nối" và sự phức tạp đầy đủ của các biểu thức thông thường. Khả năng định dạng chuỗi rất mạnh và tích lũy chuỗi thông qua "bộ đệm" hoặc bảng đơn giản và hiệu quả.
Quét theo chuỗi, theo ý kiến của tôi, một trong những phần hay nhất của thiết kế. Nó không có các mẫu "hoặc" nhưng nếu không bạn sẽ nhận được một phần lớn những gì bạn nhận được từ các cụm từ thông dụng, bao gồm cả chức năng "chụp" rất mạnh mẽ và thanh lịch. Ví dụ, tôi có thể chuyển đổi một chuỗi hex bằng cách bắt tất cả các ký tự đơn và áp dụng một hàm với nó:
s:gsub('.', function(c) return string.format("%02x", string.byte(c)) end)
Hoặc tôi có thể thoát ra ngoài tự chữ và số, ký tự không gian vào bát phân:
s:gsub('[^%w%s]', function(c) return string.format([[\%03o]], string.byte(c)) end)
Một số các tính năng trên màn hình ở đây:
tự thoát để quét chuỗi là %
, đó là khác nhau từ ký tự thoát cho trích dẫn chuỗi, là \
. Quyết định này là tuyệt vời và nên giành một giải thưởng của chính nó :-)
Có nhiều cơ chế để trích dẫn chuỗi ký tự, bao gồm [[...]]. Nếu bạn muốn tạo hoặc kết hợp các chuỗi với dấu gạch chéo ngược trong chúng (ví dụ như LaTeX), đây là một ơn trời.
Nếu bạn muốn toàn bộ phân tích cú pháp không có ngữ cảnh, bạn luôn có thể sử dụng LPEG, thư viện được viết bởi một trong những nhà thiết kế của Lua.
Hiệu suất là khá quan trọng (thời gian đặc biệt là khi khởi động)
Lua luôn thắng giải thưởng hiệu suất. Khởi động nhanh như chớp: toàn bộ hệ thống (bao gồm trình biên dịch, thư viện, bộ thu gom rác và hệ thống thời gian chạy) phù hợp với 150KB. Để tránh thời gian tạm dừng, Lua cung cấp bộ sưu tập rác gia tăng. Xem thêm SO câu hỏi Why is Lua faster than other scripting languages?
Bạn có thể thực hiện khởi động nhanh hơn bằng cách precompiling kịch bản của bạn, nhưng tôi đã không bao giờ tìm thấy nó cần thiết để làm mã — và vì biên soạn này (như trái ngược với mã nguồn) không phải là di động, tiền biên dịch thường gây đau đầu hơn là giải quyết.
nhu cầu một cách dễ dàng được biên dịch trên nhiều nền tảng
Lua biên dịch sử dụng tinh khiết ANSI C và thậm chí không cần POSIX. Tôi có một phiên bản chạy trên PalmOS PDA của tôi.
Cần phải là ngôn ngữ sẽ vẫn còn trong khoảng thời gian 5 năm.
Lua đã có từ năm 1993. Hơn nữa, hai thành viên của nhóm cung cấp hỗ trợ nhiều nhất là các giáo sư được thuê tại PUC-Rio. Lúa là sinh kế của họ. Cuối cùng, toàn bộ hệ thống chỉ có 17.000 dòng mã. Nếu Rio rơi khỏi bản đồ vào ngày mai, bất kỳ ai có khóa học trình độ đại học tốt đều có thể chọn hệ thống và duy trì nó. Sẽ có rất nhiều tình nguyện viên.
Tôi đã nhìn một chút tại Python và Lua nhưng không thực sự biết đủ về họ
thấy rất thắc mắc Which game scripting language is better to use: Lua or Python?.
Nhưng hoàn toàn không dễ dàng nhúng trong chương trình C từ những gì tôi hiểu. Bạn có biết khác nhau không? –
Không bao giờ cố gắng, cá nhân tôi đã không sử dụng C/C++ nhiều hơn "Hello World". Tôi biết ít nhất một (C + + tôi nghĩ) dự án mã nguồn mở mà không nhúng nó mặc dù, nếu bạn muốn poke xung quanh và xem làm thế nào nó được thực hiện. –
Vâng, nó được gọi là gì? –