Answers:
与含义相比,“含义”的使用范围更广泛。
最初的二分法继承于逻辑和哲学,介于“感觉”和“外延”之间(哲学家称之为“参考”)。
这种区别可以用弗雷格的原始例子来说明。他指出,“晨星”和“晚星”这两个词指的是同一物体-金星--但句子“晨星和晚星是同一颗行星”实际上传达了一些信息。给读者。他建议名词短语的含义可以超出其所表示的实际对象,包括有关其如何表示其所表示的对象的某些内容。
类似地,在编程语言中,表达式与表达式56不同,即使它们可能(应该是!)与任何客户端程序完全无法区分。但是,即使它们没有区别,它们也不相同 -在评估这两个程序时,您的机器在第一种情况下进行乘法运算,而在第二种情况下不进行乘法运算。
在构建指称语义时,我们尝试构建一种语言模型,在该模型中,难以区分的程序表示---指---是同一数学对象。目的是简化关于程序行为的推理,因为我们可以对表示法,数学对象进行推理,而不必担心程序如何呈现的细节。这使我们避免不得不处理我们不感兴趣的程序含义方面。
含义和外延与操作语义相关的方式更加复杂,且有所不同。我可能稍后再扩展我的答案以涵盖此内容,但是我现在必须运行。:)
编辑:好的,我现在扩展这个答案。
“外延”和“指称”之间的联系非常精确,这是因为发明了指称语义的人们(例如,斯科特和斯特拉奇)非常有意识地从哲学逻辑中挪用了思想,并将其作为项目的一部分。
要理解意义和操作语义之间的关系,回顾哲学家迈克尔·达米特(Michael Dummett)的“意义理论”概念以及它与“语义理论”的区别是有帮助的。
在Dummett的术语中,语义理论是将句子联系起来以确定数学对象的一种组合方式。在逻辑上,句子的含义是其真实值,它是根据其构成部分的真实值确定的。编程语言的指称语义使用了各种各样的数学对象,但是它的工作方式相同-我们根据子术语的含义给出了程序术语的含义。因此,在Dummett的术语中,指称语义提供了编程语言的语义理论。
一个意义理论也与句子的数学对象的组成方式,但除了它包含一个账户的证明什么的句子,数学对象之间的关系。他提出了这个想法,以了解直觉主义数学家如何理解真理的概念。特别是,他们对逻辑连接词的含义进行了成分说明,但没有像传统逻辑学家那样给它们语义值。例如,在直觉逻辑的Brouwer-Heyting-Kolmogorov帐户中,以下列方式定义了真相:
当可以给出A的规范证明时,命题就是正确的。
现在,请注意,此定义连接了命题和真值,但是必须通过给出规范证明的可能性来证明这种连接是正确的。
操作语义通过这种称义概念进入画面。操作语义只是对抽象机功能的描述。在给出了指称语义之后,我们通常希望证明该指称语义对操作语义是忠实的。此属性称为充足性(以及其完整的抽象概念),它恰好等于给出了一种将抽象机器状态与指称对象联系起来的意义理论,该理论在抽象机器的简化下是封闭的。
实际上,这还不是全部,因为我在这里介绍的是如何通过可实现性模型连接操作方法和确定性方法。类型理论也可以具有证明理论的语义(实际上,这种前景是Dummett最感兴趣的),但是在本文中我没有解释这种联系。