Tôi biết C# và Java làm. Có ai khác biết về bất kỳ người nào khác không?Ngôn ngữ lập trình nào có trình biên dịch JIT?
Trả lời
Nói đúng, JIT là thuộc tính của thời gian chạy, không phải ngôn ngữ. Điểm phức tạp, nhưng ngụ ý là bất kỳ ngôn ngữ nào chạy trên một JVM chẳng hạn có thể tận dụng lợi thế của JIT của JVM. Jython, JRuby, Groovy, v.v.
Tamarin cũng có JIT. Tôi nghĩ rằng điều này có thể chạy JavaScript và ActionScript? Không tích cực ...
C++ với các thư viện bổ sung.
Bài viết Just-In-Time Compilation
trên wikipedia liệt kê nhiều hơn:
- GNU sét - Một thư viện mà tạo ra mã ngôn ngữ lắp ráp tại thời gian chạy
- Mozilla nanojit - A, cross-platform nhỏ Thư viện C++ phát ra mã máy. Nó được sử dụng như JIT cho các công cụ Javascript của Mozilla Tamarin và SpiderMonkey Javascript
Và một số trình phát ngôn ngữ khác cho C++.
Đối với C# - tất cả ngôn ngữ .NET sử dụng cùng thời gian chạy và jit. VB.NET, C#, F #, IronPython, IronRuby, COBOL.NET và nhiều hơn nữa ...
Thời gian chạy .NET sử dụng JIT để bất kỳ ngôn ngữ nào đạt được điều đó. Bạn có thể tìm thêm thông tin here.
C# không sử dụng JIT. C# biên dịch thành CIL cho nền tảng .NET và .NET sử dụng JIT tại thời gian thực thi.
.NET không chỉ đơn thuần là C#. Ngoài ra còn có VB.NET, Delphi.NET, Fujitsu Cobol, IronRuby, IronPython, F #, v.v. Tất cả các ngôn ngữ nhắm vào nền tảng .NET đều sử dụng trình biên dịch .NET JIT khi chạy.
Ngôn ngữ lập trình không sử dụng JIT. Chương trình sử dụng JIT.
C# không có JIT C# được dịch sang CIL và CIL 'thực thi' được chạy JIT.
Dalvik sử dụng cú pháp Java, nhưng được biên dịch sang bytecode của riêng nó. Máy ảo Dalvik hoàn toàn khác với máy ảo Java.
+1 để đề cập đến Dalvik. Đó là những gì ban đầu đã thúc đẩy tôi đặt câu hỏi này. – DJTripleThreat
PLT Scheme đã có JIT một thời gian rồi.
Tôi tin rằng cả hai loại này đều bị giới hạn ở x86.
LuaJIT cho x86-64 đang trong giai đoạn thử nghiệm và sẽ sớm có sẵn. – asandroq
Smalltalk có trình biên dịch JIT.
cho Python, có một dự án PyPy, mà nó bao gồm JIT (hiện thực hóa những mã để chạy nhanh hơn trong CPython trong nhiều trường hợp)
Có một số nhầm lẫn về những gì định nghĩa/sử dụng một trình biên dịch JIT: được nó là một ngôn ngữ lập trình? nó là một chương trình? một môi trường thời gian chạy ?.
Thực tế, nó là một thực hiện của một ngôn ngữ lập trình cụ thể, cung cấp trình biên dịch JIT cho các kiến trúc hướng dẫn mục tiêu cụ thể (x86, x86_64, PPC, ...).
Ví dụ, việc triển khai SBCL cung cấp trình biên dịch JIT cho LISP chung, nhưng các triển khai khác của ngôn ngữ đó không (chẳng hạn như CLISP).
Ví dụ khác, việc triển khai OpenJDK của máy ảo Java cung cấp JIT cho một số kiến trúc, nhưng không cho người khác (chẳng hạn như ARM), nơi bytecode vẫn được diễn giải.
Lưu ý phụ: đừng quên ngôn ngữ lập trình Factor. Việc thực hiện heavilly sử dụng một trình biên dịch JIT.
Phải. Tôi đã thay đổi tiêu đề của câu hỏi này để phản ánh thực tế đó, cảm ơn! – DJTripleThreat