Tôi đã sử dụng rộng rãi Lua trong quá khứ.
Luabind thực sự dễ sử dụng, không cần thiết cho máy phát bên ngoài như SWIG, tài liệu rất tuyệt. Thời gian biên dịch vẫn tốt.
Vấn đề lớn nhất tôi đã thấy: lua chủ yếu là ... chỉ ghi. Bạn không thực sự có các lớp, nhưng chỉ mảng kết hợp với một chút đường cú pháp (đối tượng ['key'] có thể được viết object.key), vì vậy bạn dễ dàng kết thúc thêm một 'thành viên' trong một hàm tối nghĩa, hoàn toàn quên về nó, và có phản ứng phụ sau này.
Vì lý do này, và lý do này chỉ, tôi thích Python hơn. Boost :: Python là cơ sở cho Luabind vì vậy cả hai đều có một API tương tự (Luabind được sử dụng để dễ dàng hơn một chút để xây dựng nhưng không còn nữa). Về mặt chức năng, chúng khá tương đương.
Không liên quan trực tiếp: Không có cách nào trong số này có thể được sử dụng một cách đáng tin cậy trong môi trường đa luồng (vì vậy điều này tùy thuộc vào độ phức tạp của máy chủ của bạn).
- N Chuỗi chủ đề: GIL (Global Interpreter Lock) đang trên đường. Mỗi lần bạn sử dụng một biến trong một chuỗi, nó bị khóa, vì vậy nó sẽ làm hỏng điểm, ngoại trừ các hoạt động I/O dài và các cuộc gọi đến các hàm C.
- lua có coroutines, nhưng chúng không thể song song.
- đề Ruby là không thực sự đề, nhưng tương tự như coroutines Lua của
Lưu ý rằng bạn vẫn có thể tạo ra một environement cho mỗi thread, nhưng họ sẽ không có khả năng giao tiếp (trừ trường hợp được một bộ máy C++) . Điều này đặc biệt dễ dàng trong Lua.
Nếu bạn nghĩ Lua quá đơn giản, và Ruby quá khó để nhúng, có lẽ bạn nên xem xét Python? – Macke
Nếu bạn đang vạch trần cơ sở mã (đặc biệt là máy chủ), bạn có thực sự muốn có một thư viện lớn không? Bạn có thể dành nhiều nỗ lực hơn để lấy đi các tính năng thư viện nguy hiểm mà người dùng có thể khai thác khi nói đến hộp cát. –