Tôi đang làm việc bằng ngôn ngữ lập trình đồ chơi của riêng mình. Bây giờ tôi đang giải thích ngôn ngữ nguồn từ AST và tôi tự hỏi những gì lợi thế biên dịch thành một mã byte và sau đó giải thích nó có thể cung cấp cho tôi.Động lực đằng sau việc biên dịch mã byte là gì?
Để bây giờ tôi có ba điều trong tâm trí:
- Vượt qua hàng trăm cây cú pháp của thời gian có thể chậm hơn so với chạy hướng dẫn trong một mảng, đặc biệt là nếu sự hỗ trợ mảng O (1) truy cập ngẫu nhiên (ví dụ. nhảy 10 hướng dẫn lên và xuống).
- Trong môi trường thực thi đã nhập, tôi có một số chi phí thời gian chạy vì AST của tôi được nhập và tôi liên tục duyệt qua (ví dụ: tôi có 10 loại nút và tôi cần kiểm tra loại hiện tại của mình là thi hành). Có thể biên dịch thành một mã byte không định dạng có thể giúp cải thiện điều này, vì sau khi kiểm tra kiểu và biên dịch, tôi sẽ có một giá trị và mã không được nhập.
- Việc biên dịch thành mã byte có thể cung cấp khả năng di động tốt hơn.
Điểm của tôi có chính xác không? Một số động lực khác đằng sau việc biên dịch bytecode là gì?
Bằng cách chạy trên trình diễn giải nó làm tăng tính di động của mã của bạn – Luis
@Luis, vâng điều này đã có trong tâm trí của tôi, tôi quên thêm .. – sinan
@Luis: đó là không có thật. Các AST được tuần tự hóa có thể được thực hiện như nhau. Bytecode có thể trong thực tế không được di động; Mã byte bytecode cụ thể cho từng phiên bản của trình thông dịch. –