[注意:此段现在已过时。]您的问题的标题包含一个不必要的假设,即编程语言“基于数学基础”。尽管这两个区域确实具有重要关系,但通常情况并非如此。更为准确的说法是(某些)编程语言是使用基础技术设计的。一个更好的问题是“编程语言和数学基础如何相关?”
最普遍的联系体现在标语作为程序的证明中,可以使它以多种方式起作用。该柯里-霍华德同构是最明显的一个。通过它,我们可以立即联系类型理论,逻辑和程序设计。但是应该强调的是,在每种通用编程语言都支持的通用递归的情况下,Curry-Howard对应不能很好地工作(因为每种类型都已被使用)。
使口号证明作为程序工作的一种更巧妙的方法是使用可实现性。这里我们也将证明和程序联系起来,但是现在的方向是从证明到程序:每个证明都给出一个程序,但不是每个程序都一定是证明。
基于基础编程语言的主要例子是阿格达,它仅仅是依赖类型理论的实现。但是,Agda不是通用编程语言,因为它不支持通用递归。Agda中的每个功能都是合计的,有些可计算的功能无法在Agda中实现。实际上,程序员不会注意到这一点,但是他们会注意到Agda不允许使用不确定的值,例如无限循环。
勒柯克是不是一种编程语言,而是一种证明助手。但是,它也具有提取功能,可以提供来自证明的程序。证明助手和编程语言不应相互混淆。
我们不应忘记,序言和其他逻辑编程语言从计算是证明搜索的思想中汲取了灵感。当然,这与逻辑紧密相关。
Haskell是一种基于领域理论的通用编程语言。也就是说,它的语义是领域理论的,因为它必须考虑部分功能和递归。Haskell社区开发了许多受类别理论启发的技术,其中最著名的是monad,但不应与monad混淆。通常,高级编程功能通常结合领域理论和类别理论来对待,但这不是街上的Haskell程序员擅长的。Haskell类型的所谓“句法范畴”是Haskell与范畴理论如何相互对应的外行人观点。
集合论(古典的或建设性的)似乎在较小程度上启发了编程语言中的思想。当然,建设性集合论与通过建设性逻辑进行编程有联系。直觉集合论在编程语言中的一项重要应用是Alex Simpson提出的,他用它来使综合领域理论发挥作用。但这是相当高级的东西,也许请看这些幻灯片。Jean-Louis Krivine为古典布景理论开发了一个非常有趣的可实现性品牌。这似乎是将经典集合理论与程序设计联系起来的好方法。
总而言之,编程语言理论使用基础技术。这并不奇怪,因为我们认为计算是一个基本概念。但是,说编程语言是“基于”某种基础的,这太天真了。实际上,基础的“集合论-类型论-范畴论”三分法仍然只是一个有用的高级观察,可以用各种方式在数学上精确地进行观察,但是这没有必要。这是历史性的事故。