Trình Thông Dịch Là Gì?

Thảo luận trong 'Công Nghệ' bắt đầu bởi Táo Ngọt, 15 Tháng bảy 2021.

  1. Táo Ngọt

    Táo Ngọt Member

    Bài viết:
    Tìm chủ đề
    555
    1. Trình thông dịch là gì?

    [​IMG]

    Trình thông dịch là một chương trình máy tính được sử dụng để thực hiện trực tiếp các lệnh chương trình được viết bằng một trong nhiều ngôn ngữ lập trình cấp cao.

    Trình thông dịch chuyển đổi chương trình cấp cao thành một ngôn ngữ trung gian mà sau đó nó thực thi, hoặc nó có thể phân tích cú pháp mã nguồn cấp cao và sau đó thực hiện các lệnh trực tiếp, được thực hiện từng dòng hoặc từng câu lệnh.

    Con người chỉ có thể hiểu các ngôn ngữ cấp cao, được gọi là mã nguồn. Mặt khác, máy tính chỉ có thể hiểu các chương trình được viết bằng ngôn ngữ nhị phân, do đó cần phải có trình thông dịch hoặc trình biên dịch.

    Ngôn ngữ lập trình được thực hiện theo hai cách: Thông dịch và biên dịch. Như tên cho thấy, một trình thông dịch chuyển đổi hoặc thông dịch một mã lập trình cấp cao thành mã mà máy có thể hiểu được (mã máy) hoặc thành một ngôn ngữ trung gian có thể dễ dàng thực thi.


    [​IMG]

    Trình thông dịch đọc từng câu lệnh mã và sau đó chuyển đổi hoặc thực thi trực tiếp. Ngược lại, trình hợp dịch hoặc trình biên dịch chuyển đổi mã nguồn cấp cao thành mã gốc (đã biên dịch) có thể được thực thi trực tiếp bởi hệ điều hành (ví dụ: Bằng cách tạo chương trình. Exe).

    Cả hai trình biên dịch và thông dịch đều có những ưu điểm và nhược điểm của chúng và không loại trừ lẫn nhau; điều này có nghĩa là chúng có thể được sử dụng kết hợp vì hầu hết các môi trường phát triển tích hợp đều sử dụng cả biên dịch và dịch thuật cho một số ngôn ngữ cấp cao.

    Trong hầu hết các trường hợp, trình biên dịch thích hợp hơn vì đầu ra của nó chạy nhanh hơn nhiều so với việc diễn giải từng dòng một. Thay vì quét toàn bộ chương trình và dịch nó thành mã máy như trình biên dịch làm, trình thông dịch dịch mã một câu lệnh tại một thời điểm.

    Trong khi thời gian để phân tích mã nguồn được giảm xuống, đặc biệt là một mã đặc biệt lớn, thời gian thực thi cho trình thông dịch tương đối chậm hơn so với trình biên dịch. Trên hết, vì việc diễn giải diễn ra trên mỗi dòng hoặc câu lệnh, nó có thể bị dừng ở giữa quá trình thực thi để cho phép sửa đổi mã hoặc gỡ lỗi.

    Các trình biên dịch phải tạo ra mã đối tượng trung gian yêu cầu nhiều bộ nhớ hơn để được liên kết, trái ngược với các trình thông dịch có xu hướng sử dụng bộ nhớ hiệu quả hơn.

    Vì một trình thông dịch đọc và sau đó thực thi mã trong một quy trình duy nhất, nên nó rất hữu ích cho việc viết kịch bản và các chương trình nhỏ khác. Do đó, nó thường được cài đặt trên các máy chủ Web, nơi chạy rất nhiều tập lệnh thực thi. Nó cũng được sử dụng trong giai đoạn phát triển của một chương trình để kiểm tra từng đoạn mã nhỏ thay vì phải biên dịch toàn bộ chương trình mỗi lần.

    Mọi câu lệnh nguồn sẽ được thực thi từng dòng một trong quá trình thực thi, điều này đặc biệt được đánh giá cao vì lý do gỡ lỗi để nhận ra lỗi ngay lập tức. Thông dịch viên cũng được sử dụng cho mục đích giáo dục vì chúng có thể được sử dụng để chỉ cho học sinh cách lập trình một tập lệnh tại một thời điểm.

    Các ngôn ngữ lập trình sử dụng trình thông dịch bao gồm Python, Ruby và JavaScript, trong khi các ngôn ngữ lập trình sử dụng trình biên dịch bao gồm Java, C ++ và C.

    2. Chu kỳ phát triển


    [​IMG]

    Trong chu kỳ phát triển phần mềm, các lập trình viên thực hiện các thay đổi thường xuyên đối với mã nguồn. Khi sử dụng trình biên dịch, mỗi lần thay đổi mã nguồn, chúng phải đợi trình biên dịch dịch các tệp nguồn đã thay đổi và liên kết tất cả các tệp mã nhị phân cùng nhau trước khi chương trình có thể được thực thi. Chương trình càng lớn thì thời gian chờ càng lâu. Ngược lại, một lập trình viên sử dụng trình thông dịch ít phải chờ đợi hơn rất nhiều, vì trình thông dịch thường chỉ cần dịch mã đang được làm việc sang một biểu diễn trung gian (hoặc không dịch nó), do đó cần ít thời gian hơn nhiều trước khi có thể thay đổi. Thử nghiệm. Hiệu ứng hiển nhiên khi lưu mã nguồn và tải lại chương trình. Mã đã biên dịch thường ít được gỡ lỗi dễ dàng hơn vì chỉnh sửa, biên dịch và liên kết là các quá trình tuần tự phải được tiến hành theo trình tự thích hợp với một bộ lệnh thích hợp. Vì lý do này, nhiều trình biên dịch cũng có một hỗ trợ điều hành, được gọi là Maket và chương trình. Tạo tệp liệt kê các dòng lệnh của trình biên dịch và trình liên kết cũng như các tệp mã nguồn của chương trình, nhưng có thể sử dụng đầu vào menu dòng lệnh đơn giản (ví dụ:

    "Tạo 3."

    ) để chọn nhóm thứ ba (tập hợp) các lệnh sau đó đưa ra các lệnh cho trình biên dịch và trình liên kết cung cấp các tệp mã nguồn được chỉ định.

    3. Phân phối


    [​IMG]

    Một trình biên dịch chuyển đổi mã nguồn thành lệnh nhị phân cho kiến trúc của một bộ xử lý cụ thể, do đó làm cho nó ít di động hơn. Việc chuyển đổi này chỉ được thực hiện một lần, trên môi trường của nhà phát triển và sau đó, bản nhị phân tương tự có thể được phân phối đến các máy của người dùng nơi nó có thể được thực thi mà không cần dịch thêm. Một trình biên dịch chéo có thể tạo mã nhị phân cho máy người dùng ngay cả khi nó có bộ xử lý khác với máy nơi mã được biên dịch.

    Một chương trình được thông dịch có thể được phân phối dưới dạng mã nguồn. Nó cần được dịch trong mỗi máy cuối cùng, việc này tốn nhiều thời gian hơn nhưng làm cho việc phân phối chương trình độc lập với kiến trúc của máy. Tuy nhiên, tính khả chuyển của mã nguồn được thông dịch phụ thuộc vào máy đích thực sự có một trình thông dịch phù hợp. Nếu trình thông dịch cần được cung cấp cùng với nguồn, thì quá trình cài đặt tổng thể sẽ phức tạp hơn so với việc phân phối tệp thực thi nguyên khối vì bản thân trình thông dịch là một phần của những gì cần được cài đặt.

    Thực tế là mã được thông dịch có thể dễ dàng được con người đọc và sao chép có thể được quan tâm từ quan điểm của bản quyền. Tuy nhiên, tồn tại nhiều hệ thống mã hóa và xáo trộn khác nhau. Việc phân phối mã trung gian, chẳng hạn như mã bytecode, có tác dụng tương tự như giải mã, nhưng mã bytecode có thể được giải mã bằng trình dịch ngược hoặc trình tháo gỡ.

    4. Hiệu quả

    Nhược điểm chính của trình thông dịch là một chương trình được thông dịch thường chạy chậm hơn so với khi nó đã được biên dịch. Sự khác biệt về tốc độ có thể rất nhỏ hoặc lớn; thường là một thứ tự về độ lớn và đôi khi nhiều hơn. Nói chung sẽ mất nhiều thời gian hơn để chạy một chương trình dưới trình thông dịch hơn là chạy mã đã biên dịch nhưng có thể mất ít thời gian hơn để diễn giải nó so với tổng thời gian cần thiết để biên dịch và chạy nó. Điều này đặc biệt quan trọng khi tạo mẫu và kiểm tra mã khi một chu trình sửa-diễn giải-gỡ lỗi thường có thể ngắn hơn nhiều so với chu kỳ sửa-biên-dịch-chạy-gỡ-lỗi.

    Thông dịch mã chậm hơn chạy mã đã biên dịch vì trình thông dịch phải phân tích từng câu lệnh trong chương trình mỗi khi nó được thực thi và sau đó thực hiện hành động mong muốn, trong khi mã đã biên dịch chỉ thực hiện hành động trong một ngữ cảnh cố định được xác định bởi biên dịch. Đây thời gian chạy phân tích được gọi là "nghệ thuật trình diễn trên không". Việc truy cập vào các biến cũng chậm hơn trong một trình thông dịch vì việc ánh xạ các số nhận dạng đến các vị trí lưu trữ phải được thực hiện lặp đi lặp lại tại thời điểm chạy thay vì tại thời điểm biên dịch.

    Có nhiều thỏa hiệp khác nhau giữa tốc độ phát triển khi sử dụng trình thông dịch và tốc độ thực thi khi sử dụng trình biên dịch. Một số hệ thống (chẳng hạn như một số Lisps) cho phép mã được thông dịch và biên dịch để gọi lẫn nhau và chia sẻ các biến. Điều này có nghĩa là sau khi một quy trình đã được kiểm tra và gỡ lỗi dưới trình thông dịch, nó có thể được biên dịch và do đó được hưởng lợi từ việc thực thi nhanh hơn trong khi các quy trình khác đang được phát triển. Nhiều trình thông dịch không thực thi mã nguồn như tên gọi của nó mà chuyển đổi nó thành một số dạng nội bộ nhỏ gọn hơn. Nhiều trình thông dịch CƠ BẢN thay thế từ khóa bằng mã thông báo byte đơn có thể được sử dụng để tìm hướng dẫn trong bảng nhảy. Một số trình thông dịch, chẳng hạn như trình thông dịch PBASIC, đạt được mức độ nén chương trình thậm chí cao hơn bằng cách sử dụng cấu trúc bộ nhớ chương trình hướng bit thay vì hướng byte, trong đó mã thông báo lệnh chiếm có lẽ 5 bit, các hằng số "16 bit" trên danh nghĩa được lưu trữ trong mã có độ dài thay đổi yêu cầu 3, 6, 10 hoặc 18 bit và toán hạng địa chỉ bao gồm một "bit offset". Nhiều trình thông dịch BASIC có thể lưu trữ và đọc lại biểu diễn nội bộ được mã hóa của riêng họ.

    Trình thông dịch biểu thức Toy C

    Một trình thông dịch cũng có thể sử dụng cùng một trình phân tích và phân tích cú pháp từ vựng như trình biên dịch và sau đó diễn giải cây cú pháp trừu tượng kết quả. Định nghĩa kiểu dữ liệu mẫu cho định nghĩa thứ hai và trình thông dịch đồ chơi cho cây cú pháp thu được từ các biểu thức C được hiển thị trong hộp.
     
Từ Khóa:

Chia sẻ trang này

Đang tải...