logo

Chương trình dịch là gì? Đặc trưng, phân loại của chương trình dịch? Tại sao cần có chương trình dịch?

icon_facebook

Kiến thức về chương trình dịch: Chương trình dịch là gì?; Đặc trưng của chương trình dịch; Phân loại chương trình dịch; Tại sao cần có chương trình dịch? giúp các bạn học tốt môn tin học. 


Chương trình dịch là gì?

Chương trình dịch – hay còn được gọi với tên tiếng Anh là  compiler, là chương trình có chức năng chuyển đổi chương trình nguồn được viết bằng ngôn ngữ lập trình bậc cao sang  chương trình đích được thể hiện bằng ngôn ngữ máy và chương trình đích này có thể chạy (thực thi) trên máy tính được.

- Chương trình dịch được ứng dụng để giải quyết các bài toán cụ thể và ứng dụng thực tế hơn như:

+ Dịch một ngôn ngữ lập trình thành mã máy

+ Dịch một ngôn ngữ lập trình bậc cao thành một ngôn ngữ lập trình bậc thấp hơn

+ Chuyển đổi đoạn mã giữa các ngôn ngữ lập trình với nhau

+ Kiểm tra ngữ pháp, chính tả của các đoạn văn

+ Dịch từ hình ảnh thành văn bản

Các giai đoạn của chương trình dịch

Ngoài ra, chương trình dịch trải qua hai giai đoạn: phân tích và tổng hợp.

- Giai đoạn phân tích nhằm phân tích chương trình nguồn về từ vựng và cú pháp.

- Giai đoạn tổng hợp nhằm tạo ra chương trình đích gồm ba bước, đó là:

• Sinh mã trung gian (chuyển chương trình nguồn về chương trình trung gian);

• Tối ưu mã (chỉnh sửa, tối ưu chương trình trung gian);

• Sinh mã (tạo chương trình đích từ chương trình trung gian đã tối ưu).

Chương trình dịch là gì? Tại sao cần có chương trình dịch?

Đặc trưng của chương trình dịch

Một chương trình dịch tốt cần có các đặc trưng sau:

- Tính toàn vẹn: kết quả ở ngôn ngữ đích phải hoàn toàn tương đương với đầu vào viết ở ngôn ngữ nguồn

- Tính hiệu quả: chương trình dịch sử dụng không quá nhiều bộ nhớ và công suất tính toán, kết quả ở ngôn ngữ đích là đủ tốt

- Tính trong suốt: chương trình dịch phải rõ ràng về kết quả sau từ bước thực hiện, giúp người dùng có thể hiệu chỉnh và sửa lỗi nếu có sau từng bước thực hiện

- Tính chịu lỗi: chương trình có thể chấp nhận một số lỗi của đầu vào và đưa ra các gợi ý xử lý phù hợp. Chương trình dừng ở ngay lỗi đầu tiên không thể coi là tốt


Phân loại chương trình dịch

+ Phân loại cổ điển:

+ Trình biên dịch (compiler): nhận toàn bộ nguồn rồi dịch sang đích một lượt

+  Trình thông dịch (interpreter): nhận mã nguồn từng phần, nhận được phần nào dịch (và thực thi) phần đó

 Nhận xét:

- Compiler hoạt động giống như dịch giả

- Interpreter hoạt động giống như người phiên dịch (các cuộc giao tiếp)

- Hiện nay: ranh giới giữa compiler và interpreter ngày càng mờ dần

- Ngay cả biên dịch cũng được chia thành 2 loại:

- Tĩnh (statically): mã sinh ra chạy trực tiếp ngay

- Động (dynamically): mã sinh ra cần thao tác tái định vị rồi mới có thể chạy được

- Một số ngôn ngữ lập trình kết hợp cả compiler và interpreter, chẳng hạn như java

- Mã java được biên dịch thành mã bytecode

- Máy ảo chạy mã bytecode ở dạng thông dịch

- Một số sử dụng compiler và just-in-time compiler

- Mã C# được biên dịch thành mã IL

- Mã IL được biên dịch thành mã máy trong lần chạy đầu


Tại sao cần có chương trình dịch

Chúng ta cần phải có chương trình dịch bởi vì chương trình dịch có chức năng chuyển đổi chương trình được viết bằng ngôn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy cụ thể. Nó nhận đầu vào là chương trình viết bằng ngôn ngữ lập trình bậc cao (chương trình nguồn) là dữ liệu vào (Input), thực hiện chuyển đổi sang ngôn ngữ máy (chương trình đích) là kết qua ra (Output).

icon-date
Xuất bản : 09/11/2021 - Cập nhật : 04/07/2024

Câu hỏi thường gặp

Đánh giá độ hữu ích của bài viết

😓 Thất vọng
🙁 Không hữu ích
😐 Bình thường
🙂 Hữu ích
🤩 Rất hữu ích
image ads