Trình biên dịch là một chương trình phần mềm chuyển đổi mã lập trình máy tính được viết bởi một lập trình viên con người thành mã nhị phân (mã máy) mà một CPU cụ thể có thể hiểu và thực thi. Hành động chuyển đổi mã nguồn thành mã máy được gọi là “biên dịch”. Khi tất cả mã của bạn được chuyển đổi cùng một lúc trước khi đến các nền tảng chạy nó, quá trình này được gọi là Trước khi xây dựng (AOT).
Ngôn ngữ lập trình nào sử dụng trình biên dịch AOT?
Nhiều ngôn ngữ lập trình phổ biến yêu cầu một trình biên dịch bao gồm:
- Fortran
- pascal
- Hợp ngữ
- C.
- C++
- Nhanh
Trước Java và C#, tất cả các chương trình máy tính đều được biên dịch hoặc thông dịch .
Điều gì về mã giải thích?
Mã được giải thích thực thi các hướng dẫn trong một chương trình mà không biên dịch chúng thành ngôn ngữ máy. Mã được giải thích phân tích cú pháp mã nguồn trực tiếp, được kết hợp với một máy ảo dịch mã cho máy trong thời gian chạy hoặc tận dụng mã được biên dịch trước. Javascript thường được giải thích .
Mã được biên dịch chạy nhanh hơn mã được giải thích vì nó không cần thực hiện bất kỳ công việc nào tại thời điểm hành động được thực hiện. Công việc đã được thực hiện.
Ngôn ngữ lập trình nào sử dụng trình biên dịch JIT?
Java và C# sử dụng trình biên dịch tức thời. Trình biên dịch đúng lúc là sự kết hợp của trình biên dịch AOT và trình thông dịch. Sau khi viết một chương trình Java, trình biên dịch JIT sẽ chuyển đổi mã thành mã byte thay vì mã chứa các hướng dẫn cho bộ xử lý của một nền tảng phần cứng cụ thể. Bytecode độc lập với nền tảng và có thể được gửi và thực thi trên bất kỳ nền tảng nào hỗ trợ Java. Theo một nghĩa nào đó, chương trình được biên dịch theo quy trình hai giai đoạn .
Tương tự, C# sử dụng trình biên dịch JIT là một phần của thời gian chạy ngôn ngữ chung, quản lý việc thực thi tất cả các ứng dụng .NET. Mỗi nền tảng đích có một trình biên dịch JIT. Miễn là nền tảng có thể hiểu được việc chuyển đổi ngôn ngữ của mã byte trung gian, thì chương trình sẽ chạy.
Ưu và nhược điểm của việc biên dịch AOT và JIT
Quá trình biên dịch trước thời hạn (AOT) giúp thời gian khởi động nhanh hơn, đặc biệt là khi phần lớn mã được thực thi khi khởi động. Tuy nhiên, nó đòi hỏi nhiều bộ nhớ hơn và nhiều dung lượng đĩa hơn. Bản dựng JOT nên nhắm mục tiêu ít khả năng nhất trong tất cả các nền tảng thực thi có thể.
Quá trình biên dịch Just-in-time (JIT) lập hồ sơ nền tảng đích khi nó chạy và biên dịch lại một cách nhanh chóng để cải thiện hiệu suất. JIT tạo mã cải tiến vì nó nhắm mục tiêu vào nền tảng hiện tại, mặc dù mã này thường mất nhiều thời gian hơn để chạy so với mã được biên dịch AOT.