|
|
1
6
定义是从 here 是 编程语言的语义描述了语法和计算模型之间的关系。 . 这几乎就是你推断的定义。关键点,以及是什么让你的眼睛变得呆滞,正是定义了计算模型。 计算有许多不同的形式模型,每种模型都会导致不同形式的语义。操作语义可能最接近大多数人非正式地建模语义的方式,让每个代码片段通过解释器运行,并更改抽象例程的状态。这种方法在许多模型中都会出现故障,在这些模型中并发性或不确定性等,因此还有其他更适合这些情况的语义。 |
|
|
2
6
这是 意思 语言元素的形式意义 计算 (通常,这是 操作语义学 )这意味着它有效地表达了语言的一个术语所做的工作,假设一种基础的模型依赖于我们所谈论的语义。 正如您从维基百科页面看到的,您主要有三种语义:
从这个描述中,您了解到语义是一个在上下文中定义良好的东西,并且您需要一个特定的上下文,否则您就不能给语言一个关于其术语所做工作的正式定义。 |
|
|
3
5
从编程语言的理论和实践来看,语言元素具有语义。命名约定与此无关,而且语义与任何事物的“保真度”没有任何关系,除非一个实现是正确的,它有时被称为“忠实于语义”。 除此之外,很难概括,因为语义有很多不同的风格。
还有其他类型的语义,称为“操作语义”,在给定程序的情况下,语义告诉您程序将如何在抽象机上执行(或者在另一个变体中,语义不是说程序将如何执行,而是只说结果是什么)。 有“公理语义学”,它大致是关于你可以证明的关于个别程序的事实。公理化语义是有效证明技术的集合。所有可证明的声明都是真实的,这取决于实施情况。 还有“静态语义”,广义上是指在编译时为被认为是“好的”或“格式良好的”程序而强加的任何要求。像“变量在使用前必须被定义”这样的东西是静态语义。但大多数情况下,当人们说静态语义时,他们的意思是类型检查。 最后,可以说抽象数据类型、类或接口等的“语义”。这种用法要宽松得多,但归根结底要说明哪些行为是允许的。我建议您在此上下文中避免使用“语义”一词,而是使用“契约”或“规范”一词。它将避免混淆事情。 评论:把一个复杂的主题归结为一两句话并不总是有帮助的。说到编程语言, 不要在维基百科上寻找好的信息 . 维基百科的意思是好的,但它们往往是复杂的、令人困惑的,或者是完全错误的。 |