Cùng một chương trình ngắn được dịch bằng trình biên dịch (kiểm tra cả chương trình, liệt kê mọi lỗi cú pháp rồi tạo tệp chạy được) và bằng trình thông dịch (dịch và chạy từng câu lệnh, dừng ở lỗi đầu tiên). Bản hợp ngữ của chương trình đi qua trình hợp dịch hai lượt, đổi mã gợi nhớ thành mã máy nhị phân. Chèn lỗi cú pháp, lỗi khi chạy hoặc lỗi lôgic để xem lỗi được phát hiện lúc nào, rồi so thời gian chạy nhiều lần. Thẻ IDE minh hoạ tô màu cú pháp, báo lỗi, gợi ý hoàn thành mã, điểm dừng và cửa sổ theo dõi biến.
Bài Ngôn ngữ lập trình bậc cao và Python (Tin học 10) cho biết máy tính chỉ chạy được mã máy, nên chương trình viết bằng ngôn ngữ bậc cao phải qua chương trình dịch. Mô phỏng cho cùng một chương trình ngắn đi qua trình biên dịch (phân tích từ vựng, phân tích cú pháp, sinh mã, tối ưu mã rồi lưu tệp thực thi), qua trình thông dịch (dịch và chạy từng câu lệnh) và bản hợp ngữ của nó đi qua trình hợp dịch hai lượt để thành mã máy nhị phân. Mỗi bước hiện rõ dòng đang xử lí, từ tố, lệnh máy sinh ra và bảng kí hiệu.
Chọn chương trình dịch, chương trình mẫu và loại lỗi chèn vào (một hoặc hai lỗi cú pháp, lỗi lôgic), kéo giá trị nhập (nhập 0 để gây lỗi chia cho 0 khi chạy), rồi bấm Biên dịch, Thông dịch hoặc Hợp dịch; dùng Bước để đi chậm. Bảng kết quả ghi lỗi được phát hiện khi dịch, khi chạy hay không bao giờ, đồ thị so tổng thời gian chạy 1, 2, 3 lần. Thẻ IDE cho bật tắt tô màu cú pháp, báo lỗi, đặt điểm dừng, chạy từng bước và xem giá trị biến.
Câu hỏi gợi ý:
– Khi có hai lỗi cú pháp, vì sao trình biên dịch báo cả hai còn trình thông dịch chỉ báo lỗi đầu tiên?
– Vì sao nhập nhiên liệu bằng 0 gây lỗi với mọi chương trình dịch dù mã không sai cú pháp?
– Sau ba lần chạy chương trình vòng lặp, vì sao bản biên dịch nhanh hơn hẳn bản thông dịch?