Chương trình dịch có chức năng chuyển đổi chương trình từ

Câu hỏi : Chương trình dịch là gì? Tại sao cần phải có chương trình Dịch?
Trả lời:

- Chương trình dịch là chương trình đặc biệt, có chức năng chuyển đổi chương trình được viết trên 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 tính cụ thể.

- 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].

Cùng Top lời giải tìm hiểu các kiến thức xung quanh Chương trình dịch nhé!

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

Tổng quát nhất: chương trình dịch là phần mềm hệ thống chuyển đổi đoạn văn viết trong ngôn ngữ A sang đoạn văn tương đương viết trong ngôn ngữ B

Định nghĩa như vậy quá tổng quát, bài toán dịch ngôn ngữ một cách tổng quát chưa có lời giải đủ tốt

 Người ta cố gắng giải quyết các bài toán cụ thể hơn và có ứng dụng thực tế hơn, chẳng hạn:

 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 ngôn ngữ bậc thấp hơn

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

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

 Mô tả hình ảnh [dịch từ hình ảnh thành văn bản]

Đặ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

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à một khái niệm khá mới lạ nhưng thường xuyên gặp với các lập trình viên mới vào nghề. Đây là phần không thể thiếu trong phát triển phần mềm. Nếu bạn đang cần tìm hiểu khái niệm và chương trình dịch dùng để làm gì thì không thể bỏ lỡ bài viết dưới đây của chúng tôi. 

Chương trình dịch dùng để làm gì?

Chương trình dịch – hay còn được gọi với tên tiếng Anh là compiler có nhiệm vụ dịch một chuỗi các câu lệnh được viết bằng một ngôn ngữ lập trình riêng biệt [cụ thể là ngôn ngữ nguồn hoặc mã nguồn] thành một chương trình mới nhưng ở dưới dạng ngôn ngữ máy tính [ngôn ngữ đích]. Thông thường, ngôn ngữ đích là loại ngôn ngữ ở cấp thấp hơn được sử dụng để máy tính có thể hiểu được các câu lệnh đã viết. Chương trình dịch tạo ra một chương trình mới còn được gọi là mã đối tượng. 

Đa phần các chương trình dịch đều sẽ chuyển dịch mã nguồn viết trong một ngôn ngữ cấp cao, chuyển thành mã đối tượng hoặc ngôn ngữ máy để được thi hành trực tiếp bởi một máy tính hoặc một máy ảo nào đó. Tuy nhiên, cũng có những trường hợp chương trình dịch có khả năng dịch từ một ngôn ngữ cấp thấp sang một ngôn ngữ cấp cao. Những chương trình dịch dạng này được gọi là bộ biên dịch ngược. Đồng thời, cũng sẽ có những chương trình dịch từ ngôn ngữ cấp cao sang một ngôn ngữ cấp cao khác. 

Chương trình dịch dùng để làm gì?

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

Chương trình dịch vô cùng cần thiết và quan trọng trong lập trình vì nó có khả năng chuyển đổi các chương trình được viết bằng ngôn ngữ bậc cao thành chương trình có thể được thực hiện trên máy cụ thể. Nó nhận đầu vào là các chương trình nguồn được viết bằng ngôn ngữ lập trình bậc cao [dữ liệu vào – Input], sau đó thực hiện chuyển đổi sang chương trình đích là ngôn ngữ máy [kết quả ra – Output].

Chương trình dịch giúp lập trình viên có thể lập trình nên một ngôn ngữ và chuyển đổi nó sang một ngôn ngữ khác giúp máy tính có thể thực hiện được yêu cầu của người lập trình mong muốn. 

Đặc điểm của chương trình dịch

Một chương trình dịch hoàn thiện cần phải đầy đủ các đặc trưng sau:

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

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

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

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

Bạn có thể quan tâm

tập thể là gì

phân tích là gì

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

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

Chương trình dịch được chia thành 2 loại chính là:

  • Trình biên dịch [compiler]: tiếp nhận toàn bộ dữ liệu nguồn rồi dịch ra kết quả trong một lượt. Trình biên dịch thường được hoạt động giống như một dịch giả.
  • Trình thông dịch [interpreter]: tiếp nhận mã nguồn từng phần, tiến hành dịch từng phần khi nhận được. Interpreter hoạt động giống người phiên dịch trong các cuộc giao tiếp. 

Hiện nay, ranh giới giữa compiler và interpreter ngày càng thu hẹp

Trong đó, compiler cũng được chia thành 2 loại là:

  • Tĩnh [statically]: mã sinh ra chạy trực tiếp
  • Động [dynamically]: mã sinh ra cần phải có thao tác tái định vị rồi mới tiến hành chạy được

Một loại ngôn ngữ lập trình kết hợp cả compiler và interpreter đó chính là java. Mã java có thể được biên dịch thành mã bytecode, sau đó máy ảo chạy mã bytecode ở dạng thông dịch. 

Xem thêm các tài liệu khác về mọi lĩnh vực tại AMA

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

Để một chương trình dịch hoạt động thì nó cần trải qua 2 giai đoạn là giai đoạn phân tích và giai đoạn tổng hợp.

Giai đoạn phân tích được diễn ra nhằm mục tích phân tích chương trình nguồn để có kế hoạch thực hiện giai đoạn tiếp theo. Trong đó, quá trình phân tích sẽ bắt đầu từ việc phân tích từ vựng, sau đó phân tích cú pháp và cuối cùng là phân tích ngữ nghĩa. Việc phân tích càng chi tiết sẽ giúp cho giai đoạn tạo mã phía sau thực hiện dễ dàng và chính xác hơn. 

Giai đoạn tổng hợp sẽ tạo ra chương trình đích gồm 3 bước là:

  • Sinh mã trung gian: có nghĩa là sẽ chuyển chương trình nguồn về chương trình trung gian
  • Tối ưu mã: tối ưu, chỉnh sửa chương trình trung gian
  • Sinh mã: từ chương trình trung gian đã tối ưu tạo ra chương trình đích

Như vậy là AMA đã cung cấp toàn bộ thông tin về chương trình dịch dùng để làm gì, để các lập trình viên mới vào nghề có thể nắm rõ và hiểu được. Hy vọng rằng những thông tin chúng tôi chia sẻ ở trên sẽ giúp ích cho bạn trong quá trình học tập và làm việc sau này. 

AMA là thương hiệu vững chắc về đào tạo tiếng Anh theo phong cách Mỹ với mô hình học tập ưu việt và độc quyền, cùng đội ngũ giáo viên bản xứ 100%

Video liên quan

Chủ Đề