[Примітка: цей параграф зараз застарів.] Назва вашого запитання містить необґрунтоване припущення, а саме, що мови програмування "засновані на засадах математики". Це, як правило, не так, хоча дві області мають важливі стосунки. Більш точним буде твердження про те, що (деякі) мови програмування були розроблені з використанням основоположних методів. Кращим питанням буде "як пов'язані мови програмування та основи математики?"
Найзагальніший зв'язок втілений у слогані « докази-програми» , які можна зробити декількома способами. Переписка Каррі-Говард є найбільш очевидною. З ним ми відразу пов'язуємо теорію, логіку та програмування типу. Але слід підкреслити, що листування Кері-Говарда працює не дуже добре за наявності загальної рекурсії (оскільки кожен тип стає населеною), яку підтримує кожна мова програмування загального призначення.
Більш тонким способом примусової роботи лозунгу як програми є використання реалізабельності . Тут ми також співвідносимо докази та програми, але зараз напрямок йде від доказів до програм: кожен доказ дає програму, але не кожна програма обов'язково є доказом.
Основним прикладом мови програмування, заснованого на фундаменті, є Agda , яка просто є реалізацією теорії залежного типу. Однак Agda не є мовою програмування загального призначення, оскільки не підтримує загальну рекурсію. Кожна функція в Agda є загальною, і є обчислювані функції, які неможливо реалізувати в Agda. На практиці програмісти цього не помітять, але вони помітять, що Agda не допускає невизначених значень, наприклад нескінченних циклів.
Coq - це не мова програмування, а скоріше корекційний помічник. Однак він також має можливості видобутку, які дають програми з підтверджень. Асистентів-кореспондентів та мови програмування не слід плутати один з одним.
Не слід забувати, що пролог та інші мови логічного програмування беруть натхнення від думки, що обчислення - це пошук доказів . Це, звичайно, пов’язує їх з логікою.
Haskell - мова програмування загального призначення, яка базується на теорії домену . Тобто його семантика є теоретично доменною, оскільки вона повинна враховувати часткові функції та рекурсію. Громада Хаскелла розробила ряд методів, натхнених теорією категорій, з яких монади найбільш відомі, але їх не слід плутати з монадами . Більш загальнодоступні функції програмування зазвичай розглядаються за допомогою комбінації теорії доменів та теорії категорій, але це не те, в чому хакельський програміст на вулиці вміє. Так звана "синтаксична категорія" типів Хаскелла - це уявлення мирян про те, як Хаскелл і теорія категорій відповідають один одному.
Теорія наборів (класична чи конструктивна), здається, надихає ідеї в мові програмування меншою мірою. Звичайно, теорія конструктивних множин має свій зв'язок з програмуванням через конструктивну логіку. Одне важливе застосування інтуїтивістської теорії множин до мов програмування було надано Алексом Сімпсоном, який використовував її для роботи синтетичної теорії доменів. Але це досить вдосконалений матеріал, можливо, дивіться ці слайди . Жан-Луї Кривін розробив дуже цікавий бренд реалізації для класичної теорії множин. Це здається хорошим способом співвідносити класичну теорію множин та програмування.
Підводячи підсумок, теорія мов програмування використовує основоположні методи. Це не дивно, оскільки ми вважаємо обчислення основним поняттям. Але занадто наївно говорити, що мови програмування "базуються" на певних засадах. Насправді трихотомія основ "теорія множин - теорія типів - теорія категорій" - це знову лише корисне спостереження високого рівня, яке можна зробити математично точним різними способами, але в цьому немає нічого необхідного. Це історична аварія.