Nếu tôi hiểu câu hỏi của bạn một cách chính xác, tôi không nghĩ rằng đó là một quy tắc cứng và nhanh chóng. Ví dụ, bạn có thể sử dụng một ngôn ngữ chức năng như Lisp, để tạo một trình thông dịch cho chính nó. Trong trường hợp này, các chi tiết thực hiện được thực hiện một cách chức năng (vì Lisp là một ngôn ngữ chức năng).
Ngoài ra, nếu bạn có ngôn ngữ Turing Complete, bạn có thể sử dụng ngôn ngữ đó để triển khai trình phân tích cú pháp/phiên dịch/trình biên dịch cho bất kỳ ngôn ngữ nào khác. Có các ngôn ngữ Turing-Complete bắt buộc và các ngôn ngữ Turing-Complete đầy đủ chức năng/khai báo.
Nhưng tất cả mã cuối cùng đều được thực hiện để lắp ráp hoặc mã máy, vốn vốn bắt buộc. Về lý thuyết, những gì tôi đã nói ở trên là đúng, nhưng rõ ràng là không thực hành :).
Là một lịch sử thú vị sang một bên, LISP là một cấu trúc lý thuyết hoàn toàn; nó là một ký hiệu toán học cho các ngôn ngữ máy tính. Nó vẫn lý thuyết cho đến khi chức năng eval
của LISP được thực hiện trong mã máy của Steve Russel trên một máy IBM 704:
Theo những gì được báo cáo của Paul Graham trong Hackers & Họa sĩ, tr. 185, McCarthy nói: "Steve Russell đã nói, nhìn xem, tại sao tôi không lập chương trình eval này ..., và tôi nói với anh ta, ho, ho, bạn đang bối rối lý thuyết với thực hành, điều này eval là dành cho đọc, không phải cho máy tính.Nhưng ông đã đi trước và đã làm nó.Đó là, ông biên dịch eval trong giấy của tôi vào mã máy IBM 704, sửa lỗi, và sau đó quảng cáo này như là một thông dịch viên Lisp, mà nó chắc chắn là. điểm đó Lisp về cơ bản là hình thức mà nó có ngày hôm nay ... " (nhấn mạnh mỏ)
Vì vậy, một lần nữa, sự tinh tế giữa lý thuyết và thực hành. :)
Bạn đúng, đây là ý nghĩa của câu hỏi. – AwkwardCoder
Nhưng trình thông dịch Lisp sau đó được thực hiện dưới dạng mã bắt buộc. Tại một số điểm, trừ khi bạn đang chạy trên một máy Lisp, công cụ phải được biên dịch xuống để lắp ráp. – dsimcha
Tôi ám chỉ điều đó ở cuối câu trả lời của tôi. Nếu bạn nghĩ về nó * về mặt lý thuyết * thì nó có ý nghĩa. Nhưng trong thực tế, không phải như vậy. Ví dụ tôi có thể thực hiện một trình phân tích cú pháp LISP trong Perl và một trình phân tích cú pháp Perl trong LISP. Nếu bạn nhìn vào nó trên giấy, trong trường hợp đầu tiên bạn nhìn thấy một ngôn ngữ chức năng đang được thực hiện một cách bắt buộc, trong khi trong trường hợp thứ hai, bạn đang nhìn thấy một ngôn ngữ bắt buộc được thực hiện một cách chức năng. Tuy nhiên, khi bạn đặt nó vào thực tế, nó sẽ được rõ ràng là bắt buộc, bởi vì ngôn ngữ lắp ráp là bắt buộc. –