30/09/2018, 16:39

Sự khác nhau giữa thông dịch và biên dịch?

Em nghe nói Python là ngôn ngủ thông dịch vậy nó có những khác biệt nào so với các ngôn ngử thông dịch như pascal, c++, c# … Các bạn giải thích giùm mình nhé! Cảm ơn!

Itachi Citus viết 18:53 ngày 30/09/2018

Hiểu nôm na thì biên dịch là dịch một lần hết toàn bộ mã nguồn của một chương trình còn thông dịch là chạy đến câu lệnh nào thì dịch câu lệnh đó. Ví dụ cổ điển là thông dịch giống như một thông dịch viên dịch tiếng Việt sang tiếng Anh cho một người nước ngoài trong khi giao tiếp trực tiếp, khi họ nghe đến câu nào thì dịch đến câu đó, còn biên dịch giống như dịch một cuốn sách, sau khi dịch toàn bộ cuốn sách mới đem tới cho người đọc.

Vậy dịch mã nguồn của một ngôn ngữ về thứ gì? Có thể dịch về mã máy (hợp ngữ), dịch về mã trung gian (như bytecode của java, hay mã trung gian của .Net) v.v…

Thực tế không có ngôn ngữ nào hoàn toàn là ngôn ngữ thông dịch hay biên dịch cả, chỉ là ngôn ngữ đó “ưu tiên” sử dụng cách nào hơn thôi. Mọi ngôn ngữ biên dịch đều có thể thông dịch. Chiều ngược lại thì có thể không đúng, vì một số ngôn ngữ thông dịch có khả năng thay đổi mã nguồn của mình trong quá trình chạy, Trong khi chạy, giai đoạn dịch về mã máy đối với các chương trình cấp cao đều là quá trình thông dịch.

viết 18:41 ngày 30/09/2018

Theo mình nghĩ một cách đơn giản thì trong dịch thuật:

  • Biên dịch là giống như bạn soạn thảo ra bản dịch trước.
  • Thông dịch là người khác nói gì thì bạn dịch ra ngay lập tức.
    Tương tự trong lập trình theo mình thì:
  • Python là ngôn ngữ thông dịch vì khi bạn gõ code xong trong Terminal hay trong IDE thì Python báo lỗi ngay (nếu có lỗi).
  • Còn các ngôn ngữ khác như Pascal, C hay C++ thì bạn phải compile trước, sau đó nếu có lỗi thì IDE mới báo.
Bài liên quan
0