[注:この段落は現在では時代遅れです。]質問のタイトルには、プログラミング言語が「数学の基礎に基づいている」という不当な仮定が含まれています。2つの領域には重要な関係がありますが、一般的にはそうではありません。より正確な説明は、(一部の)プログラミング言語が基本的な手法を使用して設計されたということです。より良い質問は、「プログラミング言語と数学の基礎はどのように関係しているのでしょうか?」です。
最も一般的な接続は、いくつかの方法で動作するように作成できるスローガンプルーフアズプログラムで具体化されています。カリー=ハワード同型対応は、最も明白なものです。それを使用して、型理論、論理、プログラミングを一度に関連付けます。しかし、すべての汎用プログラミング言語がサポートする一般的な再帰(すべての型が常駐するため)が存在する場合、Curry-Howardの対応はあまりうまく機能しないことを強調する必要があります。
スローガンとしてのプルーフをプログラムとして機能させる微妙な方法は、実現可能性を使用することです。ここでも証明とプログラムを関連付けますが、今では証明からプログラムへの方向性があります。すべての証明がプログラムを提供しますが、すべてのプログラムが必ずしも証明ではありません。
基礎に基づいてプログラミング言語の主な例は、Agda単に、ある依存型理論の実装。ただし、Agdaは一般的な再帰をサポートしていないため、汎用プログラミング言語ではありません。Agdaのすべての関数は合計であり、Agdaで実装できない計算可能な関数があります。実際には、プログラマーはこれに気付かないでしょうが、Agdaは無限ループなどの未定義の値を許可しないことに気付くでしょう。
コックはありません、プログラミング言語ではなく、証明支援。ただし、プルーフからプログラムを提供する抽出機能も備えています。証明アシスタントとプログラミング言語を混同しないでください。
プロローグや他の論理プログラミング言語は、計算が証明探索であるという考えからインスピレーションを得ていることを忘れてはなりません。もちろん、これはロジックと密接に関係しています。
Haskellは、ドメイン理論に基づいた汎用プログラミング言語です。つまり、部分的な機能と再帰を考慮する必要があるため、そのセマンティクスはドメイン理論です。Haskellコミュニティは、カテゴリ理論に触発された多くのテクニックを開発しました。それらのモナドは最もよく知られていますが、モナドと混同しないでください。より一般的には、高度なプログラミング機能は通常、ドメイン理論とカテゴリー理論の組み合わせで扱われますが、これは街頭のHaskellプログラマーが熟知しているものではありません。Haskell型のいわゆる「構文カテゴリ」は、Haskellとカテゴリ理論が互いにどのように対応するかについての素人の見方です。
集合論(古典的または建設的)は、プログラミング言語のアイデアをそれほど刺激しないようです。もちろん、構成的集合論は、構成的論理を介したプログラミングと関連しています。プログラミング言語への直観主義集合論の重要な応用の1つは、合成領域理論を機能させるためにそれを使用したAlex Simpsonによって与えられました。しかし、これは非常に高度なものです。これらのスライドを参照してください。Jean-Louis Krivineは、古典集合論の実現可能性の非常に興味深いブランドを開発しました。これは、古典的な集合論とプログラミングを関連付ける良い方法のようです。
要約すると、プログラミング言語の理論は基本的な手法を使用しています。計算は基本概念であると考えているため、これは驚くことではありません。しかし、プログラミング言語は特定の基盤に「基づいている」と言うのはあまりにも単純です。実際、基礎の三分法「集合論-型論-カテゴリー論」は、さまざまな方法で数学的に正確にできる有用な高レベルの観察であるが、それについては何も必要ない。これは歴史的な事故です。