Thế nào là trình biên dịch và thông dịch?

Thế nào là trình biên dịch và thông dịch?

Như các bạn tìm hiểu về khoa học máy tính đã biết về Ngôn ngữ máy nó là một loại ngôn ngữ lập trình trong đó mọi chỉ thị đều được biểu diễn bằng các con số nhị phân 0 và 1. Tuy khó đọc và sử dụng, nhưng ngôn ngữ máy lại là ngôn ngữ duy nhất mà bộ vi xử lý (CPU) có thể nhận biết, hiểu được và thực hiện trực tiếp mà không cần dịch sang bất kỳ một ngôn ngữ nào khác. Chính vì vậy ngày xưa công việc lập trình khô khan nhưng ưu điểm của chương trình lập trình bằng mã máy là không cần mất một quá trình trung gian nào nữa nên ngôn ngữ máy là ngôn ngữ được thực thi một cách nhanh nhất nhưng khi đem sang bộ vi xử lý khác thì lại không hiểu và chạy được.

Ngày nay, mọi chương trình được viết bằng các ngôn ngữ không phải là ngôn ngữ máy cuối cùng đều phải được chuyển đổi sang ngôn ngữ máy trước khi thi hành. Ngôn ngữ lập trình cấp cao được dịch sang ngôn ngữ máy bằng một trong hai cách đó là bằng trình biên dịch (compiler) hoặc trình thông dịch (interpreter).

Thế nào là trình biên dịch và trình thông dịch

Thế nào là trình biên dịch và trình thông dịch

Trình biên dịch (compiler)

Cách hoạt động của trình biên dịch là sẽ chuyển đổi toàn bộ sang mã máy, rồi chứa kết quả vào ổ đĩa cứng để có thể thực thi ở lần chạy sau.  Chương trình ngôn ngữ cấp cao được chuyển đổi gọi là chương trình mã nguồn (source program) và chương trình ngôn ngữ máy tạo ra gọi là chương trình đối tượng (object program) hoặc mã đối tượng (objectcode).

Khi người dùng phần mềm muốn chạy chương trình, các đối tượng sẽ được nạp lên bộ nhớ chính của CPU và các chỉ thị ngôn ngữ máy được thi hành. Nhờ các chỉ thị ngôn ngữ máy CPU sẽ thực hiện truy xuất dữ liệu và tạo ra kết quả mong muốn.

Khi biên dịch từ mã nguồn, trình biên dịch sẽ kiểm tra các cú pháp mã nguồn, thực hiện các phép kiểm tra logic và đảm bảo các dữ liệu được sắp xếp đúng trình tự. Trong quá trình biên dịch các lỗi được phát hiện sẽ được liệt kê thành danh sách để lập trình viên sửa đổi các lỗi một cách dễ dàng.

Như ở trên do ngôn ngữ máy phụ thuộc vào bộ vi xử lý nên tùy vào loại máy mà có thể sẽ có những trình biên dịch khác nhau. Khi compiler công cụ lập trình sẽ cho phép bạn tùy chọn điều này.

Ví dụ đơn giản

Khi bạn sử dụng Visual Basic 6.0 khi biên dịch trên hệ điều hành Windows sẽ tạo cho bạn một tập tin thường là .exe, và tập tin .exe này khi sử dụng thì sẽ không cần biên dịch nữa. Trình biên dịch thường hay được nhắc đến với các phần mềm desktop.

Cũng có thể dễ hiểu hơn như kiểu nhà biên dịch sách Lý Lan dịch cuốn Harry Potter từ Tiếng Anh sang Tiếng Việt cho các bạn thì chỉ cần thực hiện một lần, và các bạn cứ thế sử dụng hoặc cho ai mượn cũng đều hiểu được nội dung của nó nếu như gà mờ Tiếng Anh vậy.

Trình thông dịch (interpreter)

Cách hoạt động của trình thông dịch khác so với trình biên dịch. Thay vì chuyển đổi toàn bộ mã nguồn sang chương trình đối tượng thì cứ khi nào chạy thì trình thông dịch hoạt động chuyển sang mã máy và đưa ra kết quả ngay. Công việc này sẽ diễn ra tương tự ở lần chạy tiếp theo.

Ưu điểm: của trình thông dịch là lập trình viên vẫn có thể chạy chương trình khi vẫn còn lỗi cú pháp. Lỗi đến đâu thì sẽ có thông báo đến đó và bị dừng lại.

Nhược điểm: Chương trình chạy bằng trình thông dịch không chạy nhanh bởi vì mỗi lần chạy đều mất thêm một chu trình dịch sang mã máy và thực thi. Vì vậy, đa số ngày nay các ngôn ngữ lập trình cấp cao đều dùng trình biên dịch.

Ví dụ như lập trình PHP, mỗi lần gọi web thì trình thông dịch mới bắt đầu dịch sang mã máy và đưa kết quả về cho trình duyệt người dùng.

Để dễ hiểu hơn như là bạn không biết Tiếng Anh, mỗi lần đi hội thảo ở nước ngoài bạn đều phải thuê phiên dịch Viên, như vậy sẽ không nhanh được bằng tự mình hiểu được ngôn ngữ đó phải không nào?

Lời kết

Chắc chắn với bài viết này của mình, các bạn đã hiểu về trình thông dịch và trình biên dịch rồi phải không nào? Đó là những khái niệm tương đối dễ hiểu và không có gì khó khăn cả. Hi vọng với bài viết này các bạn sẽ có thêm những kiến thức lập trình bổ ích cho mình. Nếu còn có thắc mắc gì thì các bạn cứ bình luận chúng ta cùng nhau thảo luận nhé!.