Tôi đang tìm kiếm hai thứ - tốc độ và sự tích hợp. Thông thường hai người đi cùng nhau, và với sự quen thuộc. Thật không may, đối với C ++, có khá nhiều ngôn ngữ không cung cấp tốc độ và tích hợp. Tôi đã sử dụng Lua và nó rất tệ. Tôi đã dành toàn bộ thời gian để viết các ràng buộc và không nơi nào đủ thời gian để viết mã.
Đặc điểm ngôn ngữ? Điểm của việc nhúng một ngôn ngữ kịch bản không phải là nó có thể có các tính năng ngôn ngữ động mạnh mẽ mà ngôn ngữ gốc của tôi không có, vì vậy nó có thể được giải thích trong thời gian chạy . Tôi thực sự không quan tâm đến điều đó, miễn là về cơ bản nó hoạt động, thì điều đó cũng ổn - và phù hợp với ngôn ngữ máy chủ của tôi (trong trường hợp này là C ++). Tuy nhiên, thật đáng kinh ngạc, các ngôn ngữ được thiết kế để tích hợp vào các ứng dụng máy chủ hoàn toàn thất bại trong phần tích hợp .
Tôi có cần đồng nghiệp không? Không, tôi không cần đồng hành. Tôi có cần gõ động không? Không, tôi cần biết loại nào đang quay trở lại với tôi từ ngôn ngữ kịch bản của mình và vì tất cả các mã hiện có của tôi được xây dựng xung quanh việc gõ rất mạnh, tôi thực sự muốn mã kịch bản của mình cũng có thể tôn trọng điều đó. Tôi có cần thu gom rác không? Không, các loại của tôi đã quản lý tài nguyên của riêng chúng và tôi chắc chắn muốn phá hủy xác định. Tôi có muốn goto không? Không- tôi muốn ném ngoại lệ.
Vấn đề tôi gặp phải là về cơ bản tất cả các ngôn ngữ kịch bản lệnh hiện tại được thiết kế để mở rộng C, không phải C ++ và không hỗ trợ đúng cách cho mô hình C ++ theo nhiều cách, và ngoài ra, chúng còn có ngữ nghĩa hoàn toàn khác nhau. Làm thế nào trên trái đất tôi sẽ dịch shared_ptr
, đó là sự phá hủy xác định tự động, vào một môi trường thu gom rác? Bạn có thể viết bất cứ thư viện gói nào bạn muốn, bạn sẽ không thay đổi ngữ nghĩa ngôn ngữ cơ bản không tương thích với ngôn ngữ bạn đang cố gắng mở rộng với nó. Làm thế nào tôi có thể đảm bảo rằng đây void*
là loại đúng? Làm thế nào tôi có thể đối phó với thừa kế? Làm thế nào để tôi ném và bắt ngoại lệ? Nó không hoạt động.
Một ngôn ngữ kịch bản tốt cho C ++ sẽ được nhập tĩnh, ngữ nghĩa giá trị, bị phá hủy một cách xác định, ném và bắt ngoại lệ và tôn trọng các hàm hủy / hàm tạo / sao chép của tôi, bởi vì sau đó tất cả các kiểu của tôi sẽ hoạt động, tốt và dễ dàng, và ngôn ngữ kết quả sẽ nhanh chóng và hỗ trợ tất cả các ngữ nghĩa ban đầu của tôi, dễ dàng để liên kết.