質問への直接的な答え:はい、再帰関数に基づく難解で非実用的なPLがありますが(ホワイトスペースを考えてください)、有効な理由によりμ-再帰関数に基づく実用的なプログラミング言語はありません。μμ
一般的な再帰(すなわち再帰)関数は、ラムダ計算よりも表現力が著しく劣ります。このように、彼らは、プログラミング言語のための貧弱な基盤を作ります。また、TMが命令型PLの基礎であるということも正しくありません。実際、優れた命令型プログラミング言語は、チューリングマシンよりもλ計算にはるかに近いです。μλ
計算可能性に関しては、再帰関数、チューリングマシン、および型なしλ-計算はすべて同等です。ただし、型なしLCには、他の2つのLCにはない優れた特性があります。非常にシンプルで(3つの構文形式と2つの計算ルールのみ)、構成が非常によく、プログラミングの構成要素を比較的簡単に表現できます。また、(例えば、システムの単純型システムを搭載したFがωで拡張fはiはxは)、λが正しくと組成、容易に多くの複雑なプログラミングコンストラクトを発現することができるという点で-calculusは非常に表現することができます。また、拡張することができλをμλFωfi xλλ-ラムダではない構造を簡単に含めるための計算。上記の他の計算モデルでは、これらの優れた特性は提供されていません。
チューリングマシンは構成的でも汎用的でもありません(問題ごとにTMが必要です)。「関数」、「変数」、または「構成」の概念はありません。また、TMが命令型PLの基礎であることも正確ではありません。FWIW、命令型PLは、チューリングマシンよりも制御演算子を使用したラムダ計算にはるかに近いです。詳細な説明については、ピーターJ.ランディンの「ALGOL 60と教会のラムダ表記の対応」を参照してください。Brainf ** k(実際にはかなり単純なチューリングマシンを実装しています)でプログラミングしている場合、チューリングマシンはプログラミングには適していません。
再帰関数は、この点でTMに似ています。それらは組成的ですが、LCほど組成的ではありません。また、 μ再帰関数で有用なプログラミング構造をエンコードすることもできません。さらに、 μ再帰関数は Nに対してのみ計算し、他のすべてに対して計算するには、何らかのゲーデル番号付けを使用してデータを自然数にエンコードする必要がありますが、これは苦痛です。μμμN
したがって、ほとんどのプログラミング言語が計算に基づいているのは偶然ではありません!λ表現、compositionalityや拡張性、他のシステムが欠けていること:-calculusは、良好な特性を持っています。しかし、チューリングマシンは計算の複雑さを研究するための優れている、とμ -recursive機能は、計算可能性の論理的な概念を学ぶのに適しています。どちらもλ -calculusにはない優れた特性を持っていますが、プログラミングの分野ではλ -calculusが明らかに勝っています。λλμλλ
実際、チューリングの完全なシステムは数多くありますが、優れた特性はまったくありません。ConwayのGame of Life、LaTeXマクロ、さらには(一部の主張)DNAはすべてチューリング完全ですが、Conwayを使用したプログラム(つまり、本格的なプログラミングを行う)はありません。それらは単に良い特性を欠いています。チューリング自体は、プログラミングに関してはほとんど無意味です。
また、多くの非チューリング完全計算システムは、プログラミングに関して非常に役立ちます。正規表現とyaccはチューリング完全ではありませんが、特定のクラスの問題を解決する上で非常に強力です。Coqもチューリング完全ではありませんが、信じられないほど強力です(実際、チューリング完全な従兄弟であるOCamlよりもはるかに表現力があると考えられています)。プログラミングに関しては、多くの(近くの)役に立たないシステムが面白くチューリング完全であるため、チューリング完全性は重要ではありません。Brainf ** kやWhitespaceがCoqよりも強力なプログラミング言語であると主張するつもりはありませんか?表現力の基盤は強力なプログラミング言語の鍵である、と現代のプログラミング言語は、ほとんど常に基づいている理由ですλ-計算。