因此,对于任何给定的语言,如果我们实现相同的程序(即任何给定输入的相同输出)两次,使用不同的语法(即使用i++
而不是i+1
)两个程序将具有相同的语义?为什么?
如果我们使用不同的结构(即Arrays
vs Arraylists
),是否同样适用?
由于
答案 0 :(得分:1)
是。根据编程语言,可以存在具有相同语义的不同语法结构(组合)。
例如,我们可以使用3种结构定义一种编程语言:A
和B
,两者在语义上是等价的,以及组合(例如XY
用于任何X
}和Y
其中任何一个都可以是A
,B
或其任何组合。因此,程序A
等同于程序B
。此外AA
等于AB
,BA
和BB
等。
此外,如果我们使用语义上等同于C
的{{1}}来扩展语言,那么,例如,AA
等同于BC
等。
答案 1 :(得分:1)
因此,对于任何给定的语言,如果我们两次使用不同的语法(即使用i ++而不是i + 1)实现相同的程序(即任何给定输入的相同输出)两个程序是否具有相同的语义?
这个问题是同义反复。答案是肯定的。明显。
如果两个不同的程序为所有可能的输入集产生相同的结果,那么它们 do 具有相同的语义。根据定义 1 。
为什么?
因为那是“相同的语义”的意思!
如果我们使用不同的结构(即Arrays vs Arraylists),是否同样适用?
是
(一个数据结构可能会使用更多内存,这可能导致OOME用于一个版本而不是另一个版本...对于某些输入数据集。但是我认为这些程序不会产生相同的结果输入。)
请注意,这适用于所有实用的编程语言。任何只能以单向编写程序的编程语言......可能限制太多而无法使用。
1 - 好的,所以研究编程语义的人在阅读时可能会很合适。但我试图提供一个直观的解释,而不是一个具有良好的数学基础的解释。课程的马......正如他们所说的那样。