Show Trình biên dịch là trình dịch chuyển đổi từ ngôn ngữ nguồn (các ngôn ngữ lập trình bậc cao) thành ngôn ngữ đối tượng (ví dự như ngôn ngữ máy). Ngược lại với trình biên dịch, trình thông dịch là một chương trình bắt chước việc thực hiện của các chương trình được viết bằng ngôn ngữ nguồn. Rõ ràng, khả năng nhận thức của con người và một thiết bị điện tử như máy tính là khác nhau. Con người có thể hiểu bất cứ điều gì thông qua các ngôn ngữ tự nhiên, nhưng một máy tính thì không thể. Máy tính cần một trình dịch để chuyển đổi các ngôn ngữ được viết ở dạng ngôn ngữ mà con người có thể đọc thành dạng ngôn ngữ mà máy tính có thể đọc. Trình biên dịch và trình thông dịch là các loại trình dịch ngôn ngữ. Vậy trình dịch ngôn ngữ là gì? Trình dịch ngôn ngữ là một phần mềm dịch các chương trình từ một ngôn ngữ nguồn ở dạng có thể đọc được bởi con người thành một chương trình tương đương bằng ngôn ngữ đối tượng. Ngôn ngữ nguồn nói chung là ngôn ngữ lập trình cấp cao và ngôn đối tượng thường là ngôn ngữ máy. Bảng so sánh
Định nghĩa trình biên dịchTrình biên dịch là một trình dịch đọc một chương trình được viết bằng ngôn ngữ cấp cao và chuyển đổi nó thành ngôn ngữ máy hoặc ngôn ngữ cấp thấp và báo cáo các lỗi có trong chương trình. Nó chuyển đổi toàn bộ mã nguồn trong một lần hoặc có thể mất nhiều lượt để làm như vậy, nhưng cuối cùng, người dùng sẽ nhận được mã được biên dịch sẵn sàng để thực thi.
Trình biên dịch hoạt động theo từng giai đoạn, các giai đoạn khác nhau có thể được nhóm thành hai phần đó là:
Các giai đoạn biên dịchBây giờ hãy để chi tiết hiểu về hoạt động của từng giai đoạn.
Symbol table (bảng ký hiệu) là một cấu trúc dữ liệu quản lý các mã định danh cùng với loại dữ liệu có liên quan mà nó đang lưu trữ. Trình xử lý lỗi phát hiện, báo cáo, sửa các lỗi gặp phải giữa các giai đoạn khác nhau của trình biên dịch. Định nghĩa trình thông dịchTrình thông dịch là một thay thế để thực thi một ngôn ngữ lập trình và thực hiện công việc tương tự như một trình biên dịch. Trình thông dịch thực hiện kiểm tra từ vựng, phân tích cú pháp và kiểm tra các kiểu tương tự như trình biên dịch. Nhưng trình thông dịch xử lý cây cú pháp trực tiếp để truy cập các biểu thức và thực thi câu lệnh thay vì tạo mã trung gian. Một trình thông dịch có thể yêu cầu xử lý cùng một cây cú pháp nhiều lần, đó là lý do tại sao tốc độ sẽ đối chậm hơn so với thực hiện chương trình được biên dịch. Việc biên dịch và thông dịch kết hợp để có thể thực thi ngôn ngữ lập trình. Trong đó một trình biên dịch tạo mã ở cấp trung gian, sau đó mã được diễn giải thay vì được biên dịch thành mã máy. Sử dụng một trình thông dịch thì sẽ thuận lợi trong quá trình phát triển chương trình, trong đó phần quan trọng nhất là có thể kiểm tra việc sửa đổi chương trình một cách nhanh chóng thay vì chạy chương trình một cách hiệu quả. Tổng kếtCả trình biên dịch và trình thông dịch đều có cùng một công việc nhưng khác nhau về quy trình vận hành, Trình biên dịch lấy mã nguồn theo cách tổng hợp trong khi Trình thông dịch lấy các phần cấu thành của mã nguồn. Mặc dù cả trình biên dịch và trình thông dịch đều có những ưu điểm và nhược điểm nhất định. Với trình thông dịch thì mã nguồn có thể thực thi ở mọi nơi mà không cần phải biên dịch trước. Nhưng bù lại thì trình biên dịch sẽ tiết kiệm thời gian thực thi hơn.
Chương trình dịch dùng để dịch từ ngôn ngữ lập trình sang ngôn ngữ máy, 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ể.
A. Dịch từ ngôn ngữ máy sang ngôn ngữ tự nhiên. B. Dịch từ ngôn ngữ lập trình sang ngôn ngữ máy. C. Dịch từ ngôn ngữ máy sang ngôn ngữ lập trình. D. Dịch từ ngôn ngữ lập trình sang ngôn ngữ tự nhiên. Đáp án đúng B. Chương trình dịch dùng để dịch từ ngôn ngữ lập trình sang ngôn ngữ máy, 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ể. Giải thích nguyên nhân lựa chọn đáp án B:Chương trình dịch hay phần mềm biên dịch là một chương tình máy tính làm công việc 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, thành một chương trình tương đương nhưng ở dưới dạng một ngôn ngữ máy tính mới và thường là ngôn ngữ ở cấp thấp hơn như ngôn ngữ máy. Những đặc điểm của chương trình dịch bao gồm: – Tính chịu lỗi. Chương trình có thể chấp nhận một lỗi của đầu vào và đưa ra các gợi úc xử lý phù hợp. Chương trình dừng ngay ở lỗi đầu tiên không thể coi là tốt. – Tính toàn vẹn là 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 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 hiệu quả là 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. Các giai đoạn chương trình dịch phải trải qua bao gồm: – 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ằmg tạo ra chương trình đích gồm ba bước, bao gồm: + Sinh mã trung gian là chuyển chương trình nguồn về chương trình trung gian. + Tối ưu mã là chỉnh sửa, tối ưu chương trình trung gian. + Sinh mã là tạo chương trình đích từ chương trình trung gian đã tối ưu. – Các trình biên dịch sẽ chuyển dịch mã nguồn viết trong một ngôn ngữ cấp cao thành mã đối tương hay ngôn ngữ máy mà có thể được thi hành trực tiếp bởi một máy tính hay bởi một máy ảo. Việc chuyển dịch từ một ngôn ngữ cấp thấp sang một ngôn ngữ cấp cao hơn cũng có thể xảy ra, quá trình này thường được hiểu như là bộ biên dịch ngược nếu nó có thể tái tạo lại một chương trình trong ngôn ngữ cấp cao. – Tồn tại các trình biên dịch chuyển đổi từ ngôn ngữ cao này sang ngôn ngữ cao khác hay là chuyển đổi sang một ngôn ngữ mà nó cần để tiếp tục xử lý về sau những trình biên dịch như vậy được biết như là bộ biên dịch phân tầng. Các loại trình biên dịch cho kết quả là mã đối tượng thì một cách cơ bản bao gồm mã máy tăng cường thêm các thông tin về tên vị trí của các ngõ và các gọi ngoài. – Một tập hợp của các tập tin đối tượng mà không hẳn được cung cấp từ cùng một trình biên dịch thì vẫn có thể được liên kết với nhau để tạo nên các chương trình khả thi cuối cùng cho một người dùng. Để làm được điều đó thì các tập tin đối tượng đó phải được thiết kế chung nhau về dạng thức. Như vậy, Chương trình dịch dùng để làm gì? Là câu hỏi đã được chúng tôi trả lời chi tiết trong bài viết phía trên. Chúng tôi mong rằng nội dung trong bài viết sẽ giúp ích được quý bạn đọc. |