Câu 2:
Trình biên dịch sẽ dịch code của bạn thành native code, hoặc mã trung gian. Chính vì vậy đoạn code được biên dịch cần phải tuân thủ cú pháp một cách nghiêm ngặt. Như vậy trình biên dịch sẽ phân tích toàn bộ đoạn code và cho biết có lỗi về cú pháp ngay chỗ nào.
Trình thông dịch sẽ load đoạn code (lúc này là native code, mã trung gian, hoặc script) để thực thi từng lệnh một. Như vậy trình thông dịch chỉ phát hiện ra lỗi sai về toán học, hoặc lỗi sai về cú pháp của câu lệnh đang thực thi.
==========
Trong một ví dụ đơn giản, bạn dùng turbo pascal để viết một chương trình xuất ra chuỗi: "3 chia cho 0 bằng ", sau đó xuất tiếp kết quả của phép toán 3/0.
-Khi bạn ấn compile, lập tức toàn bộ đoạn code sẽ được kiểm tra tính hợp lệ về cú pháp, kiểu dữ liệu,... nếu hợp lệ, đoạn code sẽ được dịch sang native code (mã máy). Đây là quá trình biên dịch.
-Khi thực thi bạn sẽ thấy ở màn hình console là "3 chia cho 0 bằng Runtime error...". Như vậy đoạn lệnh xuất ra chuỗi "3 chia cho 0" vẫn được thực thi tốt. Nhưng đến đoạn lệnh xuất kết quả của phép toán 3/0 thì gặp lỗi chia cho 0, nên bạn thấy được kết quả như vậy.