Réponse directe à la question: oui, il existe des PL ésotériques et très impraticables basés sur des fonctions récursives (pensez à l'espace blanc), mais aucun langage de programmation pratique n'est basé sur des fonctions μ- récursives pour des raisons valables.μμ
Les fonctions récursives générales (c'est-à-dire récursives) sont beaucoup moins expressives que les calculs lambda. Ainsi, ils constituent une mauvaise base pour les langages de programmation. Vous n'avez pas non plus raison de dire que la MT est la base des PL impératifs: en réalité, les bons langages de programmation impératifs sont beaucoup plus proches du λ -calculus que des machines de Turing.μλ
En termes de calculabilité, les fonctions récursives, la machine de Turing et le λ -calculus non typé sont tous équivalents. Cependant, la LC non typée a de bonnes propriétés qu'aucune des deux autres n'a. Il est très simple (seulement 3 formes syntaxiques et 2 règles de calcul), est très compositionnel et peut exprimer des constructions de programmation relativement facilement. De plus, équipé d'un système de type simple (par exemple, le système F ω étendu avec f i x ), le λ -calculus peut être extrêmement expressif en ce qu'il peut exprimer de nombreuses constructions de programmation complexes facilement, correctement et de manière compositionnelle. Vous pouvez également étendre le λμλFωFje xλλ-calcul facilement pour inclure des constructions qui ne sont pas des lambdas. Aucun des autres modèles de calcul mentionnés ci-dessus ne vous donne ces belles propriétés.
La machine de Turing n'est ni compositionnelle ni universelle (vous devez avoir une MT pour chaque problème). Il n'y a pas de concepts de "fonctions", "variables" ou "composition". Il n'est pas non plus tout à fait vrai que les MT sont la base des PL impératifs - FWIW, les PL impératifs sont beaucoup, beaucoup plus proches des calculs lambda avec opérateurs de contrôle que des machines Turing. Voir "Une correspondance entre ALGOL 60 et la notation Lambda de Church" de Peter J. Landin pour une explication détaillée. Si vous avez programmé dans Brainf ** k (qui implémente en fait une machine de Turing assez simple), vous saurez que les machines de Turing ne sont pas une bonne idée pour la programmation.
μμμN
λλμλλ
En fait, il existe de nombreux systèmes Turing plus complets, mais ils n'ont absolument aucune propriété exceptionnelle. Le jeu de la vie de Conway, les macros LaTeX et même (certains prétendent) l'ADN sont tous Turing complets, mais personne ne programme (c.-à-d. Fait une programmation sérieuse) avec Conway ou étudie la complexité de calcul en utilisant les macros LaTeX. Ils manquent tout simplement de bonnes propriétés. Turing complet en soi n'a presque aucun sens en matière de programmation.
λ-calcul.