Thực chất Trình Thông Dịch Là gì?
Chào các bạn. Mình chỉ mới học lập trình được vài tháng, mình tự học lên có rất nhiều các khái niệm còn bỡ ngỡ, mong các bạn giải đáp giúp. Ở đây mình có thắc mặc một chút Trình Thông Dịch ở đây thực chất là nó ở dạng nào?
Trình thông dịch là những chương trình, mã nguồn hỗ trợ dịch ngôn ngữ nằm trong chính mã nguồn hay thư mục mã nguồn của ngôn ngữ đó (ví dụ Python). Khi chúng ta thực hiện chạy code trong Terminal nó sẽ tham chiếu tới trình thông dịch trong mã nguồn và xuất ra kết quả?
Hay Terminal(như powershell, … ) chính là trình thông dịch.
Mong các bạn giải đáp giúp
trước khi nói tới trình thông dịch là gì thì bạn phải biết thông dịch là gì, biên dịch là gì, 2 loại này khác gì nhau, sau đó mới có thể hiểu được trình thông dịch là gì
This post was flagged by the community and is temporarily hidden.
Mình hiểu cơ bản thông dịch và biên dịch là gì rồi bạn. Theo mình, thông dịch là chương trình dịch từng dòng lệnh 1, lỗi ở đâu thì chương trình sẽ nâng biệt lệ ở đó. Còn Biên dịch là mã nguồn sẽ đóng gói vào một file và thực hiện chạy chương trình.
đơn jản là biên dịch và thông khác nhau ở chỗ: nếu có lỗi xuất hiện thì phần code phía trước của biên dịch không dc thực thi, còn thông dịch thì có (và đã thực thi từ trước rồi)
trình thông dịch là 1 chương trình (hay 1 app) implement 1 ngôn ngữ thông dịch, nhận input là code của ngôn ngữ đó và thực thi code đó (chứ ko đóng gói thành file thực thi)
terminal không phải trình thông dịch, nôm na có thể coi nó là UI của các trình thông dịch (như bash, zsh, csh, cmd.exe … (mình đang nhắc tới mấy cái file chương trình trong
/bin
chứ ko phải ngôn ngữ nhé)) nhận input từ user (từ bàn phím) rồi đưa vào trình thông dịchkhi bạn “cài 1 ngôn ngữ thông dịch” vào máy, thực chất chính là cài trình thông dịch của ngôn ngữ đó (thường kèm theo core lib và docs, nhưng cũng chưa chắc có, riêng cái trình thông dịch là phải có nè)
vd: mã nguồn python gồm:
là bộ đồ nghề hoàn chỉnh để bạn sử dụng ngôn ngữ đó
lưu ý: mã nguồn ngôn ngữ bao gồm interpreter nhưng chưa chắc interpreter phải nằm trong đó
bởi ngôn ngữ lập trình chung quy ra chỉ là 1 spec, 1 chương trình implement được spec đó tự nhiên chính là interpreter của ngôn ngữ đó
nếu có lỗi xuất hiện thì phần code phía sau của biên dịch không dc thực thi chứ nhỉ?
thật ra nếu là lỗi cú pháp thì biên dịch thì sẽ không dịch được nên sẽ không chạy được còn thông dịch thì đến đoạn đó sẽ bị crash, còn lỗi logic thì cả thông dịch và biên dịch đều ứng xử như nhau tức là hoặc sẽ tính sai, hoặc sẽ chết toi
nếu có lỗi (error, exception) thì trình dịch sẽ báo lỗi và không dịch nữa => vậy cả biên dịch và thông dịch thì phần code sau lỗi đều ko dc thực thi
trình biên dịch sẽ abort => không output file chương trình => phần code phía trước ko dc thực thi
còn trình thông dịch thì dịch và thực thi từng lệnh một cho đến khi gặp lỗi thì ngừng => phần code phía trước vẫn dc thực thi