Tôi đã đọc về các thông dịch viên vòng tròn trên web (bao gồm cả SICP) và tôi đã xem xét mã của một số triển khai (như PyPy và Narcissus).
Tôi đã đọc khá nhiều về hai ngôn ngữ sử dụng đánh giá siêu vòng tròn, Lisp và Smalltalk. Theo như tôi hiểu thì Lisp là trình biên dịch tự lưu trữ đầu tiên và Smalltalk đã thực hiện JIT "thật" đầu tiên.
Một điều tôi chưa hiểu hết là làm thế nào những trình thông dịch / trình biên dịch đó có thể đạt được hiệu suất tốt như vậy hay nói cách khác, tại sao PyPy lại nhanh hơn CPython? Có phải vì suy tư?
Ngoài ra, nghiên cứu về Smalltalk của tôi khiến tôi tin rằng có mối quan hệ giữa JIT, máy ảo và sự phản chiếu. Các máy ảo như JVM và CLR cho phép rất nhiều loại hướng nội và tôi tin rằng chúng sử dụng nó rất tốt trong quá trình biên dịch Just-in-Time (và AOT, tôi cho là vậy?). Nhưng theo như tôi biết, Máy ảo là loại giống như CPU, ở chỗ chúng có một bộ hướng dẫn cơ bản. Máy ảo có hiệu quả không vì chúng bao gồm thông tin về loại và tham chiếu, cho phép phản ánh ngôn ngữ không thể tin được?
Tôi hỏi điều này bởi vì nhiều ngôn ngữ được dịch và biên dịch hiện đang sử dụng mã byte làm mục tiêu (LLVM, Parrot, YARV, CPython) và các máy ảo truyền thống như JVM và CLR đã tăng hiệu suất đáng kinh ngạc. Tôi đã được thông báo rằng đó là về JIT, nhưng theo như tôi biết thì JIT không có gì mới vì Bản thân của Smalltalk và Sun đã làm điều đó trước Java. Tôi không nhớ các máy ảo hoạt động đặc biệt tốt trong quá khứ, không có nhiều máy tính không học thuật ngoài JVM và .NET và hiệu suất của chúng chắc chắn không tốt như bây giờ (tôi ước tôi có thể lấy nguồn này nhưng tôi nói từ kinh nghiệm cá nhân).
Sau đó, thật bất ngờ, vào cuối những năm 2000, một cái gì đó đã thay đổi và rất nhiều máy ảo bắt đầu bật lên ngay cả đối với các ngôn ngữ đã được thiết lập và với hiệu suất rất tốt. Có điều gì đó được phát hiện về việc triển khai JIT cho phép khá nhiều máy ảo hiện đại tăng vọt về hiệu suất không? Một tờ giấy hoặc một cuốn sách có thể?