Không thể viết một ngôn ngữ lập trình cho phép tất cả các máy dừng trên tất cả các đầu vào và không có ngôn ngữ nào khác. Tuy nhiên, dường như rất dễ để định nghĩa một ngôn ngữ lập trình như vậy cho bất kỳ lớp phức tạp tiêu chuẩn nào. Cụ thể, chúng ta có thể định nghĩa một ngôn ngữ trong đó chúng ta có thể diễn đạt tất cả các tính toán hiệu quả và chỉ tính toán hiệu quả.
Chẳng hạn, đối với một cái gì đó như : lấy ngôn ngữ lập trình yêu thích của bạn và sau khi bạn viết chương trình của mình (tương ứng với Turing Machine ), hãy thêm ba giá trị vào tiêu đề: một số nguyên và số nguyên và đầu ra mặc định . Khi chương trình được biên dịch, hãy xuất một máy Turing có đầu vào có kích thước chạy trên cho các bước . Nếu không dừng lại trước khi các bước kết thúc, hãy xuất đầu ra mặc địnhM ′ c k d M x n M ′ x c n k M ′ c n k d P. Trừ khi tôi nhầm, ngôn ngữ lập trình này sẽ cho phép chúng tôi thể hiện tất cả các tính toán trong và không có gì nữa. Tuy nhiên, ngôn ngữ đề xuất này vốn không thú vị.
Câu hỏi của tôi: có ngôn ngữ lập trình nào nắm bắt các tập hợp con của các hàm tính toán (như tất cả các hàm tính toán hiệu quả) theo cách không tầm thường không? Nếu không có, có lý do cho việc này?