Câu trả lời trực tiếp cho câu hỏi: yes, có PLS bí truyền và rất không thực tế dựa trên chức năng -recursive (nghĩ Khoảng trắng), nhưng không có ngôn ngữ lập trình thực tế được dựa trên μ chức năng -recursive vì lý do hợp lệ.μμ
Đệ quy chung (ví dụ, -recursive) chức năng là ít hơn đáng kể diễn cảm hơn lambda sỏi. Vì vậy, họ tạo ra một nền tảng kém cho các ngôn ngữ lập trình. Bạn cũng không phải là đúng rằng TM là cơ sở của PLS bắt buộc: trong thực tế, ngôn ngữ lập trình cấp bách tốt là gần gũi hơn với λ -calculus hơn là cho các máy Turing.μλ
Về computability, chức năng -recursive, máy Turing, và untyped λ -calculus đều tương đương. Tuy nhiên, LC chưa được đánh dấu có các đặc tính tốt mà không ai trong hai người kia có. Nó rất đơn giản (chỉ có 3 hình thức cú pháp và 2 quy tắc tính toán), có tính sáng tác cao và có thể diễn tả các cấu trúc lập trình tương đối dễ dàng. Hơn nữa, được trang bị với một hệ thống kiểu đơn giản (ví dụ, hệ thống F W mở rộng với f i x ), các λ -calculus có thể được vô cùng biểu cảm ở chỗ nó có thể bày tỏ nhiều cấu trúc lập trình phức tạp một cách dễ dàng, chính xác và về thành phần. Bạn cũng có thể kéo dài tuổi λμλFωftôi xλλ-calculus dễ dàng bao gồm các cấu trúc không phải là lambdas. Không có mô hình tính toán nào khác được đề cập ở trên cung cấp cho bạn những đặc tính tốt đẹp đó.
Máy Turing không phải là thành phần hay phổ quát (bạn cần phải có TM cho từng vấn đề). Không có khái niệm về "hàm", "biến" hoặc "thành phần". Cũng không chính xác rằng TM là nền tảng của PL bắt buộc - FWIW, PL bắt buộc rất nhiều, gần với tính toán lambda với các toán tử điều khiển hơn so với máy Turing. Xem Peter J. Landin "Một sự tương ứng giữa ALGOL 60 và Lambda-Notation" để được giải thích chi tiết. Nếu bạn đã lập trình trong Brainf ** k (thực tế thực hiện một máy Turing khá đơn giản), bạn sẽ biết rằng máy Turing không phải là một ý tưởng tốt để lập trình.
chức năng rec -recursive tương tự như TM về mặt này. Chúng là thành phần, nhưng gần như không có cấu tạo như LC. Bạn cũng có chỉ không có thể mã hóa cấu trúc lập trình rất hữu ích trong μ chức năng -recursive. Hơn nữa, μ chức năng -recursive chỉ tính trên N , và để tính toán hơn bất cứ thứ gì bạn cần để mã hóa dữ liệu của bạn vào các số tự nhiên sử dụng một số loại Godel đánh số, đó là đau đớn.μμμN
Vì vậy, nó không phải là một trùng hợp ngẫu nhiên mà hầu hết các ngôn ngữ lập trình được bằng cách nào đó dựa trên các -calculus! Các λ -calculus có các đặc tính tốt: biểu cảm, compositionality và khả năng mở rộng, mà các hệ thống khác thiếu. Tuy nhiên, máy Turing là tốt để nghiên cứu tính toán phức tạp, và L chức năng -recursive là tốt cho nghiên cứu các khái niệm logic của computability. Cả hai đều có đặc tính nổi bật mà λ -calculus thiếu, nhưng trong lĩnh vực lập trình λ -calculus thắng rõ ràng.λλμλλ
Trên thực tế, có rất nhiều, rất nhiều hệ thống hoàn chỉnh Turing ngoài kia, nhưng chúng không có bất kỳ tài sản nổi bật nào. Trò chơi Cuộc sống của Conway, macro LaTeX và thậm chí (một số tuyên bố) DNA đều đã hoàn tất Turing, nhưng không có chương trình nào (tức là lập trình nghiêm túc) với Conway hoặc nghiên cứu độ phức tạp tính toán bằng cách sử dụng macro LaTeX. Họ chỉ đơn giản là thiếu tài sản tốt. Turing hoàn thành mỗi se gần như vô nghĩa khi nói đến lập trình.
Ngoài ra, nhiều hệ thống tính toán hoàn chỉnh không Turing rất hữu ích khi lập trình. Các biểu thức thông thường và yacc không hoàn thành Turing, nhưng chúng cực kỳ mạnh mẽ trong việc giải quyết một loại vấn đề nhất định. Coq cũng không hoàn thành Turing, nhưng nó cực kỳ mạnh mẽ (nó thực sự được coi là biểu cảm hơn nhiều so với người anh em hoàn chỉnh Turing của nó, OCaml). Khi nói đến lập trình, tính hoàn chỉnh của Turing không phải là chìa khóa, vì nhiều hệ thống vô dụng (gần với) hoàn toàn không thú vị Turing. Bạn sẽ không cho rằng Brainf ** k hoặc Whitespace là ngôn ngữ lập trình mạnh hơn Coq, phải không? Một biểu cảm nền tảng là chìa khóa để ngôn ngữ lập trình mạnh mẽ, và đó là lý do tại sao ngôn ngữ lập trình hiện đại được hầu như luôn luôn dựa trên λ-calculus.