Sự khác biệt có ý nghĩa sâu sắc bởi vì các ngôn ngữ được biên dịch hạn chế ngữ nghĩa theo những cách mà ngôn ngữ diễn giải không nhất thiết phải có. Một số kỹ thuật diễn giải là rất khó (thực tế không thể) để biên dịch.
Mã được giải thích có thể thực hiện những việc như tạo mã trong thời gian chạy và cung cấp khả năng hiển thị mã đó thành các ràng buộc từ vựng của một phạm vi hiện có. Đó là một ví dụ. Một điều nữa là các trình thông dịch có thể được mở rộng bằng mã thông dịch có thể kiểm soát cách đánh giá mã. Đây là cơ sở cho "fexprs" Lisp cổ đại: các hàm được gọi với các đối số không được đánh giá và quyết định phải làm gì với chúng (có toàn quyền truy cập vào môi trường cần thiết để đi bộ mã và đánh giá các biến, v.v.). Trong các ngôn ngữ được biên dịch, bạn không thể thực sự sử dụng kỹ thuật đó; thay vào đó, bạn sử dụng macro: các hàm được gọi tại thời điểm biên dịch với các đối số không được đánh giá và dịch mã thay vì diễn giải.
Một số triển khai ngôn ngữ được xây dựng xung quanh các kỹ thuật này; các tác giả của họ từ chối biên dịch là một mục tiêu quan trọng, và thay vào đó nắm lấy loại linh hoạt này.
Phiên dịch sẽ luôn hữu ích như một kỹ thuật để khởi động trình biên dịch. Để có một ví dụ cụ thể, hãy xem CLISP (một triển khai phổ biến của Common Lisp). CLISP có một trình biên dịch được viết bằng chính nó. Khi bạn xây dựng CLISP, trình biên dịch đó sẽ được diễn giải trong các bước xây dựng ban đầu. Nó được sử dụng để tự biên dịch, và sau đó khi nó được biên dịch, quá trình biên dịch sẽ được thực hiện bằng trình biên dịch được biên dịch.
Nếu không có kernel phiên dịch, bạn sẽ cần bootstrap với một số Lisp hiện có, giống như SBCL.
Với giải thích, bạn có thể phát triển một ngôn ngữ từ đầu tuyệt đối, bắt đầu với ngôn ngữ lắp ráp. Phát triển các I / O cơ bản và các thói quen cốt lõi, sau đó viết một ngôn ngữ máy tĩnh. Một khi bạn đã có eval, hãy viết bằng ngôn ngữ cấp cao; hạt nhân mã máy thực hiện việc đánh giá. Sử dụng cơ sở này để mở rộng thư viện với nhiều thói quen hơn và cũng viết một trình biên dịch. Sử dụng trình biên dịch để biên dịch các thường trình đó và chính trình biên dịch.
Dịch nghĩa: một bước đệm quan trọng trong con đường dẫn đến việc biên soạn!