Answers:
有什么特点指称语义(也看不出有什么真正的协议,此文章),但它必须是成分。这意味着,如果是语义函数,将程序映射到它们的含义,对于所有 n元程序构造函数 f和所有程序 M 1,..., M n(隐式假定类型正确),都必须执行以下操作:
这里,是语义域中与f对应的构造函数。组成性类似于代数中的同构概念。
从这个意义上说,操作语义不是组合的。从历史上看,指称语义学的发展部分是因为操作语义学不是组成性的。遵循D.Scott 突破性的演算的阶理论的指称语义,大多数指称语义曾经是阶理论。我想,除了纯粹的智力兴趣外,名词指称语义主要是因为(1960年代)发明的:
问题的部分原因是程序平等的概念没有像现在这样被很好地理解。我认为这两个问题都得到了很大程度的改善,(1)例如来自过程理论(可以看作是操作语义的一种特定形式)的基于双歧化的技术,或者例如Pitts致力于操作语义和程序等价,以及(2)通过分离逻辑或Hoare逻辑的发展,这些逻辑是通过在类型π演算中进行编程语言嵌入而衍生为Hennessy-Milner逻辑的类型化版本的。请注意,程序逻辑(=公理语义)也是组合的。
另一种看待指称语义的方式是,有许多编程语言,并且它们看起来都差不多,因此也许我们可以找到一种简单而通用的元语言,然后将所有编程语言以组合方式映射到该元语言。语言。在1960年代,人们认为某种类型的微积分就是这种元语言。图片可能说出1000多个字:
这种方法的优势是什么?从经济观点来看也许是有意义的。如果我们想证明有关一类目标程序的有趣信息,我们有两个选择。
直接在对象级别上进行证明。
证明向元级别(和向后)的转换会“保留”该属性,然后在元级别对其进行证明,然后将结果推回到对象级别。
后者的合并成本可能高于前者的成本,但是证明翻译的成本可以在所有未来使用中摊销,而证明元级别的属性的成本比证明的成本小得多。在对象级别上。
迄今为止,用于指称语义的原始顺序理论方法还没有兑现这一承诺,因为尚未为复杂的语言功能(例如面向对象,并发和分布式计算)提供精确的顺序理论语义。“精确”是指与此类语言的自然操作语义相匹配的语义。
值得学习指称语义吗?如果您是指代指称语义的顺序理论方法,那么可能不是这样,除非您想研究编程语言理论并且需要了解较早的论文。学习指称语义的顺序理论方法的另一个原因是这种方法的优点。