Пряма відповідь на питання: так, існують езотеричні та вкрай непрактичні ПЛ, засновані на -рекурсивних функціях (думаю, Whitespace), але жодна практична мова програмування не ґрунтується на μ -рекурсивних функціях з поважних причин.μμ
Загальні рекурсивні (тобто -рекурсивні) функції значно менш виразні, ніж лямбда-обчислення. Таким чином, вони створюють погану основу для мов програмування. Ви також не впевнені, що ТМ є основою імперативних ПЛ: насправді хороші імперативні мови програмування набагато ближче до λ- розрахунку, ніж вони до машин Тьюрінга.μλ
З точки зору обчислюваності, -рекурсивні функції, машина Тьюрінга і нетипізований λ -рахунок є рівнозначними. Однак нетипізований ЖК має хороші властивості, яких не має жоден з двох інших. Він дуже простий (лише 3 синтаксичні форми і 2 обчислювальні правила), є високо композиційним і може виражати конструктивні програми досить легко. Більше того, оснащена системою простого типу (наприклад, System F ωμλFω розширена з ), λ -рахунок може бути надзвичайно виразним тим, що він може легко, правильно та композиційно виражати багато складних програм програмування. Ви також можете продовжити λfixλλ-розрахунок легко включати конструкції, які не є лямбдами. Жодна з інших обчислювальних моделей, згаданих вище, не надає цих приємних властивостей.
Машина Тьюрінга не є ні композиційною, ні універсальною (для кожної проблеми потрібно мати ТМ). Немає понять "функції", "змінні" або "склад". Також не зовсім вірно, що ТМ є основою імперативних ПЛ - FWIW, імперативні ПЛ набагато, набагато ближче до лямбда-обчислень з операторами управління, ніж до машин Тьюрінга. Докладне пояснення дивіться у "Переписці між ALGOL 60 та лямбда-нотацією Церкви" Пітера Дж. Ландіна . Якщо ви запрограмували в Brainf ** k (який фактично реалізує досить просту машину Тьюрінга), ви знатимете, що машини Тьюрінга не є хорошою ідеєю для програмування.
-рекурсивні функції в цьому відношенні схожі на ТМ. Вони композиційні, але майже не такі композиційні, як ЖК. Ви також просто не можете кодувати корисні програми програмування вμ -рекурсивних функціях. Більше того, μ- рекурсивні функції обчислюють лише N , а для обчислення будь-чого іншого вам потрібно буде кодувати свої дані в натуральні числа, використовуючи якусь нумерацію Геделя, що болісно.μμN
Отже, не випадково більшість мов програмування якимось чином базується на обчисленні! Λ -ісчісленіе володіє хорошими властивостями: виразність, композиційних і розширюваність, що інші системи НЕ хапають. Однак машини Тьюрінга хороші для вивчення обчислювальної складності таλλ -рекурсивні функції хороші для вивчення логічного поняття обчислюваності. Вони обидва мають видатні властивості,яких не вистачає λ -калькулюванню, але в області програмування λ -калькулюс явно перемагає.μλλ
Насправді існує багато-багато інших повних систем Тьюрінга, але їм не вистачає жодної видатної властивості. Гра життя, Конвея, макроси LaTeX і навіть (деякі заявляють) ДНК - це Тюрінг завершений, але жодна програма (тобто серйозне програмування) з Конвеєм не вивчає складності обчислень, використовуючи макроси LaTeX. У них просто відсутні хороші властивості. Що стосується завершення , то майже безглуздо, що стосується програмування.
Крім того, багато нетурбінних повних обчислювальних систем дуже корисні, коли справа стосується програмування. Регулярні вирази та yacc не є Тюрінгом завершеними, але вони надзвичайно потужні у вирішенні певного класу завдань. Кок також не є Тюрінгом повним, але він неймовірно потужний (він насправді вважається набагато виразнішим, ніж його повний двоюрідний брат Тюрінга, OCaml). Що стосується програмування, повнота Тьюрінга не є ключовим, оскільки багато (близькі до) непотрібних систем нецікаво завершують Тьюрінга. Ви не збираєтесь стверджувати, що Brainf ** k або Whitespace є більш потужними мовами програмування, ніж Coq, чи не так? Виразна основою є ключем до потужних мов програмування, і саме тому сучасні мови програмування майже завжди засновані на λ-розрахунок.