đơ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ịch
khi 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:
- interpreter
- interactive shell (on top of the above)
- core libs (and some “optional” core libs)
- docs (optional)
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ữ đó