Sự khác nhau giữa Compiler và Interpreter

Sự khác nhau giữa Compiler và Interpreter
Đối với các Dev khi mới chập chững vào nghề lập trình, thì Compiler và Interpreter được xem như hai khái niệm cơ bản mà họ bắt buộc phải nắm.

Compiler là gì?

Compiler hay còn gọi là trình biên dịch, nó có khả năng chuyển đổi ngôn ngữ bậc cao sang ngôn ngữ máy, thường là ngôn ngữ ở bậc thấp hơn.

Nhiệm vụ chính của Compiler là thực hiện việc chuyển đổi toàn bộ mã nguồn trong một lần hay thậm chí nhiều lần như vậy, để trả về cho người dùng những mã được biên dịch sẵn sàng và phục vụ cho việc thực thi chương trình.

Compiler thường mang trong mình những đặc điểm nổi bật sau:

  • Có khả năng bảo mật tương đối tốt.
  • Có sự ràng buộc chặt chẽ về kiểu trong ngôn ngữ lập trình, khiến khả năng tùy biến khá thấp.
  • Hỗ trợ tính năng Multi-thread, cùng Transaction.
  • Sở hữu tốc độ thực thi vô cùng nhanh chóng.
  • Do mã được biên dịch cho hệ thống có cùng ngôn ngữ máy, nên phải phụ thuộc vào một hệ điều hành nhất định. Nhưng chính điều này sẽ giúp chương trình tận dụng tối đa các tính năng đặc trưng có trong hệ điều hành. 

Sự khác nhau giữa Compiler và Interpreter

Interpreter là gì?

Interpreter hay trình thông dịch, cũng có nhiệm vụ chuyển đổi các ngôn ngữ bậc cao sang mã nhị phân mà máy tính có thể đọc được. 

Không giống với Compiler, trước khi chuyển source code sang mã máy Interpreter cần phải chuyển mã nguồn sang một dạng gọi là Intermediate code.

Tiếp đó, mỗi phần trong đoạn code sẽ được thông dịch và đưa vào thực thi một cách riêng biệt theo trình tự. 

Trong quá trình diễn ra, nếu lỗi được phát hiện tại phần code đang thông dịch, bạn sẽ nhận được thông báo và dừng tiến trình mà không phải thông dịch tiếp những phần code còn lại.

Khi làm việc cùng Interpreter, bạn sẽ nhận thấy được những điểm nổi bật sau:

  • Dễ dàng chỉnh sửa mã nguồn khi có nhu cầu.
  • Ngôn ngữ lập trình có thể sử dụng một cách uyển chuyển và mềm dẻo theo mục đích ứng dụng của nó.
  • Mã nguồn thường ở dạng văn bản nên không phụ thuộc vào hệ điều hành, nên nó có thể chạy trên mọi nền tảng nếu nhận được sự hỗ trợ từ một trình thông dịch tương ứng.
  • Tốc độ thực thi không nhanh bằng các chương trình viết bằng ngôn ngữ được hỗ trợ trình biên dịch.
  • Tuy không được hỗ trợ Multi-thread, cùng Transaction, nhưng vẫn có một số trường hợp ngoại lệ như với PHP hay MySQL.

Sự khác nhau giữa Compiler và Interpreter

Sự khác nhau giữa Complier và Interpreter

CompilerInterpreter
Đầu vàoToàn bộ chương trình.Một dòng code.
Đầu raMã đối tượng trung gian.Không tạo ra các mã đối tượng trung gian.
Tốc độ thực thiNhanh chóng.Chậm hơn, do phải trải qua nhiều giai đoạn hơn.
Cơ chế hoạt độngHoàn thành quá trình biên dịch trước khi thực thi.Thực hiện song song giữa quá trình biên dịch và thực thi chương trình.
Bộ nhớĐòi hỏi dung lượng bộ nhớ cao.Không cần nhiều dung lượng bộ nhớ.
LỗiHiển thị tất cả các lỗi sau khi biên dịch và cùng lúc.Lỗi dòng nào sẽ hiển thị ngay dòng đó.
Phát hiện lỗiKhó khăn.Đơn giản.
Ngôn ngữ sử dụngC/C++/C#, Scala, TypeScript.

PHP, Perl, Python, Ruby.

Sự khác nhau giữa Compiler và Interpreter