khái niệm thông dịch và biên dịch

Bài gửi  TranQuoc_LePhong_I91C 10/9/2011, 20:52

Gọi một cách đầy đủ thì là “Trình biên dịch” (Compiler) hoặc “Trình thông dịch” (Interpreter)
Trình biên dịch: làm công việc chuyển các câu lệnh được gõ bằng 1 ngôn ngữ lập trình nào đấy (gọi là mã nguồn) sang một chương trình tương đương nhưng bằng một ngôn ngữ máy tính mới (gọi là chương trình đích). Lần sau muốn chạy lại chương trình, chỉ cần chạy lại chương trình đã được dịch.
Ví dụ: khi soạn xong 1 chương trình pascal hoặc C, sau khi biên dịch bạn sẽ được chương trình dạng mã máy (.exe)
khi biên dịch 1 chương trình viết bằng java, sau khi biên dịch bạn sẽ được chương trình dạng mã byte (byte code)
Trình thông dịch: sau khi bạn soạn thảo một chương trình bằng 1 ngôn ngữ lập trình nào đấy (mã nguồn), thì quá trình thông dịch là quá trình xảy ra lúc runtime, trình thông dịch sẽ dịch từng lệnh của chương trình bạn và thực thi. Lần sau muốn chạy lại chương trình thì phải thông dịch lại.
Ví dụ: php hoặc asp. Mỗi khi bạn chạy website, trình thông dịch sẽ dịch lại từ đầu mã nguồn và thực thi.
Còn vấn đề kiểm tra từng câu từng chữ trong code ngay lúc đang gõ bàn phím và báo lỗi thì chả liên quan gì đến thông dịch và biên dịch. Đó chẳng qua chỉ là sự kiểm tra cú pháp (syntax) đơn thuần mà thôi.
Một số ngôn ngữ dạng nửa biên dịch, nửa thông dịch như:
Java: sau khi biên dịch sẽ được byte code. Khi chạy chương trình (runtime) sẽ là quá trình thông dịch.

Nếu nói nôm na 1 cách đại khái: trình biên dịch giống như 1 nhà dịch thuật. Giả sử ông ta dịch 1 cuốn sách từ English sang Vietnamese. Thì với những người không cần biết nội dung cuốn English thế nào, chỉ cần cầm cuốn Vietnamese là đọc và hiểu.
Nhưng trình thông dịch lại giống 1 thông dịch viên. Ví dụ khi giao tiếp với người nước ngoài, bạn cần thuê 1 thông dịch viên dịch cho bạn hiểu những gì họ nói. Xong xuôi đâu đấy, lần sau nếu bạn muốn hiểu những gì họ nói thì lại thuê thông dịch viên tiếp.