Oop 编程语言背后是否有数学模型或理论?

Oop 编程语言背后是否有数学模型或理论?,oop,math,programming-languages,model,algebra,Oop,Math,Programming Languages,Model,Algebra,RDBMS基于Codd模型和Codd模型。我们有类似于编程语言或OOP的东西吗?一个概念可能是。据我所知,用于描述语法。像lisp这样的函数式语言继承了Church的“lambda calculs”(维基百科文章)的基本概念。 Wikipedia面向对象编程的理论可能会很有启发性。我能想到的最接近的类比是Gurevich进化代数,如今,它以“Gurevich抽象状态机”(GASM)的名义更为人所知 当古列维奇加入微软时,我一直希望看到该理论有更多的实际应用,但似乎很少有人能出来。您可以在Micr

RDBMS基于Codd模型和Codd模型。我们有类似于编程语言或OOP的东西吗?

一个概念可能是。据我所知,用于描述语法。像lisp这样的函数式语言继承了Church的“lambda calculs”(维基百科文章)的基本概念。
Wikipedia面向对象编程的理论可能会很有启发性。

我能想到的最接近的类比是Gurevich进化代数,如今,它以“Gurevich抽象状态机”(GASM)的名义更为人所知

当古列维奇加入微软时,我一直希望看到该理论有更多的实际应用,但似乎很少有人能出来。您可以在Microsoft站点上查看ASML页面

GASM的优点在于,它们非常类似于伪代码,即使它们的语义是正式指定的。这意味着从业者可以很容易地掌握它们

毕竟,我认为关系代数成功的一部分是,它是可以容易理解的概念的形式基础,即表、外键、连接等。


我认为软件系统的动态组件需要类似的东西

Lisp是基于Lambda演算的,是我们今天在现代语言中看到的许多东西的灵感来源

冯诺依曼机器是现代计算机的基础,它最初是用汇编语言编程的,然后是在公式转换器中编程的。然后,上下文无关语法的形式语言学理论被应用,并成为所有现代语言语法的基础

可计算性理论(形式自动机)具有与形式语法层次结构平行的机器类型层次结构,例如,正则语法=有限状态机,上下文无关语法=下推自动机,上下文敏感语法=图灵机

还有两种类型的信息论,Shannon和Kolmogorov,可以应用于计算

还有一些鲜为人知的计算模型,如递归函数理论、寄存器机和Post机

不要忘记各种形式的谓词逻辑


补充:我忘了提到离散数学-群论和格理论。格尤其是(IMHO)是一个非常漂亮的概念,它是所有布尔逻辑和一些计算模型的基础,例如指称语义。

如果你学习编程语言(例如:在大学),那么它有相当多的理论,涉及的数学也不少

例如:

  • (就像BNF曾经描述的那样)
  • 建筑
我们有编程语言的基础模型吗

天哪,是的。因为有这么多编程语言,所以有多种模型可供选择。最重要的第一点:

  • 丘奇的非类型lambda演算是一种计算模型,其功能与图灵机一样强大(不多也不少)。著名的“Church Turing假说”是这两个等价模型代表了我们知道如何实现的最通用的计算模型。lambda演算非常简单;整个语言是

    e ::= x | e1 e2 | \x.e
    
    它们构成变量、函数应用程序和函数定义。lambda演算还提供了一个相当大的“简化规则”集合,用于简化表达式。如果你发现一个表达式不能被简化,它被称为“标准形式”,代表一个值

    lambda演算非常普遍,你可以从几个方向来理解它

    • 如果要使用所有可用的规则,可以编写专门的工具,如部分计算器和部分编译器

    • 如果您避免减少lambda下的任何子表达式,而是使用所有可用的规则,那么您将得到一个懒惰函数语言的模型,如或Clean。在这个模型中,如果一个约简可以终止,那么它就可以保证终止,并且很容易表示无限的数据结构。非常强大

    • 如果您避免减少lambda下的任何子表达式,并且如果您还坚持在应用函数之前将每个参数减少为标准形式,那么您就有了一个渴望函数语言的模型,如F#、Lisp、Objective Caml、Scheme或Standard ML

  • 还有几种类型的lambda结石,其中最著名的被归为系统F,由Girard(逻辑)和Reynolds(计算机科学)独立发现。SystemF是CLU、Haskell和ML等语言的优秀模型,这些语言是多态的,但具有编译时类型检查。Hindley(逻辑学)和Milner(计算机科学)发现了系统F的一种限制形式(现在称为Hindley-Milner类型系统),这使得从非类型lambda演算的一些表达式推断系统F表达式成为可能。Damas和Milner开发了一种算法来进行这种推理,该算法在标准ML中使用,并在其他语言中得到了推广

  • Lambda演算只是在推动符号。Dana Scott在指称语义学方面的开创性工作表明,lambda演算中的表达式实际上对应于数学函数,他确定了哪些函数。斯科特的工作在理解“递归定义”方面尤为重要,这些定义在计算机科学中很常见,但从数学的角度来看却是毫无意义的。Scott和Christopher Strachey证明了递归定义等价于递归方程的最小定义解,并进一步说明了如何构造该解。任何允许递归的语言,特别是允许任意类型递归的语言(如Haskell和Clean)都是如此