Phân biệt 2 khái niệm Compile và Interpret, sự khác nhau và giống nhau giữa Compiler và Interpreter.

Bạn đang xem: Compiler là gì

*

Hiện tại có rất nhiều ngôn ngữ lập trình để tạo ra ứng dụng; Một số được gọi là ngôn ngữ biên dịch, phần mềm để chuyển đổi mã lập trình sang mã máy cho ngôn ngữ đó được gọi là trình biên dịch (compiler). Một số ngôn ngữ được gọi là ngôn ngữ thông dịch và phần mềm hiện thực ngôn ngữ đó được gọi là trình thông dịch (Interpreter).

2 khái niệm này cũng không hoàn toàn chính xác bởi biên dịch và thông dịch chỉ là những cách hiện thực của một ngôn ngữ. Về mặt lý thuyết, ngôn ngữ nào cũng có thể là ngôn ngữ biên dịch hay là ngôn ngữ thông dịch và nó phụ thuộc vào cách mà bạn hiện thực hóa ngôn ngữ đó thành ngôn ngữ máy.

Ngôn ngữ biên dịch

Ngôn ngữ biên dịch là ngôn ngữ lập trình mà những trình biên dịch có thể biên dịch mã nguồn thành ngôn ngữ máy. Ngôn ngữ biên dịch cũng có thể là ngôn ngữ thông dịch, C++ là một ngôn ngữ biên dịch nhưng nó cũng có nhiều trình thông dịch cho ngôn ngữ này, chẳng hạn như là UnderC, Cint, hay Ch, …

Xem thêm: Boolean Là Gì – Kiểu Dữ Liệu Boolean

Tại sao ngôn ngữ biên dịch lại có trình thông dịch nhưng không có điều ngược lại xảy ra? Bởi vì các ràng buộc trong ngôn ngữ máy và ngôn ngữ biên dịch được tạo ra để thỏa mãn các ràng buộc này trong khi các ngôn ngữ thông dịch thì không có tính chất đó.

*

Quá trình biên dịch

Ngôn ngữ thông dịch

Với một số ngôn ngữ, mã nguồn có thể được thực thi từng dòng một bởi một chương trình được gọi là trình thông dịch. Đây là một trong những lý do khiến cho ngôn ngữ lập trình thông dịch xử lý chậm hơn ngôn ngữ biên dịch.

Ngoài ra, các ngôn ngữ thông dịch như ngôn ngữ lập trình Java, C# hỗ trợ thêm nhiều công cụ, kiểu dữ liệu động, thông tin về các kiểu dữ liệu này sẽ được lưu trữ trong trình thông dịch làm giảm hiệu suất xử lý của các chương trình được viết bằng ngôn ngữ thông dịch. Một điểm bất lợi nữa của những ngôn ngữ thông dịch là trình thông dịch phải được cài đặt trên máy tính hoặc đóng gói đi cùng với ứng dụng sử dụng ngôn ngữ thông dịch, và điều đó có thể gây khó khăn cho người sử dụng.

Xem thêm: Sự Khác Biệt Giữa Microsoft Edge Là Gì

Một vài trình biên dịch sẽ chuyển đổi mã nguồn của ngôn ngữ lập trình nhất định thành ngôn ngữ trung gian (intermediate language) hoặc là bytecode và nhúng vào file thực thi. Sau đó máy ảo hoặc trình thông dịch sẽ thi hành ngôn ngữ trung gian này trong suốt thời gian thực thi của chương trình, đây là nguyên tắc hoạt động của bộ thư viện .NET của Microsoft. Ngôn ngữ lập trình Java còn có một dạng thực thi khác là bytecode sẽ được chuyển đổi thành ngôn ngữ máy bởi trình thông dịch và thực thi.

Chuyên mục: Hỏi Đáp