我正在寻找一个准确和可以理解的定义。我发现的不同之处是:
表示语义是程序设计语言形式意义的数学表达。
摘要表示语义学是一种通过构造描述语言表达式意义的数学对象(称为表示)来形式化编程语言意义的方法。
发布于 2016-07-20 19:55:11
“指称语义学”是指程序的数学意义和赋予程序这种意义的方法。它就像,比如说,“历史”这个词,意思是事物的历史,以及对事物历史的整个研究领域。
发布于 2016-07-26 02:04:46
我从未发现术语“指称语义”的定义对于理解这个概念及其意义很有用。相反,我认为最好的方法是考虑表示语义所支持的推理形式。
具体而言,表示语义支持等式推理和参照透明程序。维基百科给出了引用透明度的介绍性定义:
如果一个表达式可以用它的值替换,而不改变程序的行为(换句话说,生成一个对相同输入具有相同效果和输出的程序),则该表达式是引用透明的。
但是,更精确的定义不会讨论用“值”替换表达式,而是用另一个表达式替换它。然后,引用透明性是这样一种属性,如果您用具有相同外延的替换部分替换,则结果整体也具有相同的表示。
所以IMHO,作为一个程序员,这是需要理解的关键:指称语义学是关于如何赋予引用透明性概念数学上的“牙齿”,所以我们可以给出关于替换正确性的原则性答案。例如,在函数式编程的背景下,一个关键的应用程序是:什么时候才能说两个函数值表达式实际上表示“相同”函数,从而可以安全地替代另一个函数?经典的表示式答案是外延等式:两个函数是相等的当且仅当它们将相同的输入映射到相同的输出,所以我们只需要证明这些表达式是否表示广义等价的函数。例如,Quicksort和Bubblesort是明显不同的参数,但在暗示上它们是相同的函数。
在反应性编程的背景下,最大的问题是:我们什么时候可以说两个不同的表达式表示相同的事件流或依赖时间的值?
https://stackoverflow.com/questions/38488091
复制相似问题