代码之家  ›  专栏  ›  技术社区  ›  Jay

“语义”的简单定义,因为它通常用于编程语言/API?

  •  9
  • Jay  · 技术社区  · 15 年前

    今天我突然想到,尽管我在引用语言元素和命名约定时采用了“语义”这一术语,而且不经常使用,但我对正式定义没有任何意义。

    My attempt to find a formal definition in the programming domain 使我的眼睛变得呆滞。

    我从我遇到它的环境和它在语言学中更常见的用法中,有一种意义上的感觉,我通常用这个词来指 语言元素的意义或表现力,或术语对其命名的目的、行为或功能的忠实性。 .

    不过,这个定义是我自己的想法。我是个人类学/英语专业的学生,从未上过计算机科学课程。这是用CS教的吗?

    有没有一个更准确的定义可以归结为一两个陈述,而不是一篇详尽而详尽的文章?

    3 回复  |  直到 15 年前
        1
  •  6
  •   deinst    15 年前

    定义是从 here 编程语言的语义描述了语法和计算模型之间的关系。 . 这几乎就是你推断的定义。关键点,以及是什么让你的眼睛变得呆滞,正是定义了计算模型。

    计算有许多不同的形式模型,每种模型都会导致不同形式的语义。操作语义可能最接近大多数人非正式地建模语义的方式,让每个代码片段通过解释器运行,并更改抽象例程的状态。这种方法在许多模型中都会出现故障,在这些模型中并发性或不确定性等,因此还有其他更适合这些情况的语义。

        2
  •  6
  •   Jack    15 年前

    这是 意思 语言元素的形式意义 计算 (通常,这是 操作语义学 )这意味着它有效地表达了语言的一个术语所做的工作,假设一种基础的模型依赖于我们所谈论的语义。

    正如您从维基百科页面看到的,您主要有三种语义:

    • 操作语义学 通过指定抽象虚拟机在执行某个术语时的行为方式来表达该语言的含义。(如: + :从堆栈中弹出两个元素并推送总和。这是 不是 正式的,它是 不是 你真的应该怎么想,只是给你一个想法而已。这是最常用的描述“普通”编程语言语义的方法。例如,对于Java,您可以在每一个可能的术语中都有一个JVM指令序列,用于执行该术语的建模。 可能当你问到 语义 这是你要找的那个。
    • 外延语义学 是一种不同的方法:你给语言的每个术语一个由数学函数表示的意义。所以对于前面的示例,您将有一个函数 f 关联 + 它包含术语的语义(有效含义)
    • 公理语义学 是一种注释语言术语的方法,表达它们如何改变某些语言的有效性 符合逻辑的 要在程序上验证的公式。你应该考虑阅读 this 只是因为推理规则和公理在你如何发展这种语义上是相似的,但它是以实际的方式解释的。

    从这个描述中,您了解到语义是一个在上下文中定义良好的东西,并且您需要一个特定的上下文,否则您就不能给语言一个关于其术语所做工作的正式定义。

        3
  •  5
  •   Norman Ramsey    15 年前

    从编程语言的理论和实践来看,语言元素具有语义。命名约定与此无关,而且语义与任何事物的“保真度”没有任何关系,除非一个实现是正确的,它有时被称为“忠实于语义”。

    除此之外,很难概括,因为语义有很多不同的风格。

    • 克里斯托弗·斯特拉奇是真正推动这个想法的人,这个想法通常是一个短语(想想 宣言 , 定义 , 陈述 表达 )由较小的子短语组成,较大短语的意义(语义)应是构成子短语意义的函数。在这种风格中,每个语法良好的子短语都有一个语义。听起来这就是你要找的。

    还有其他类型的语义,称为“操作语义”,在给定程序的情况下,语义告诉您程序将如何在抽象机上执行(或者在另一个变体中,语义不是说程序将如何执行,而是只说结果是什么)。

    有“公理语义学”,它大致是关于你可以证明的关于个别程序的事实。公理化语义是有效证明技术的集合。所有可证明的声明都是真实的,这取决于实施情况。

    还有“静态语义”,广义上是指在编译时为被认为是“好的”或“格式良好的”程序而强加的任何要求。像“变量在使用前必须被定义”这样的东西是静态语义。但大多数情况下,当人们说静态语义时,他们的意思是类型检查。

    最后,可以说抽象数据类型、类或接口等的“语义”。这种用法要宽松得多,但归根结底要说明哪些行为是允许的。我建议您在此上下文中避免使用“语义”一词,而是使用“契约”或“规范”一词。它将避免混淆事情。


    评论:把一个复杂的主题归结为一两句话并不总是有帮助的。说到编程语言, 不要在维基百科上寻找好的信息 . 维基百科的意思是好的,但它们往往是复杂的、令人困惑的,或者是完全错误的。

    推荐文章