您知道语言的语法,语法和语义之间的区别吗?


回答 1:

我认为必须指出,语言学家和计算机科学家使用“语法”和“语法”一词的方式有所不同。

计算机科学家使用“语法”一词来命名一组规则,以确定一组给定的符号序列在语法上是否有效,即,它是否属于特定语言。 换句话说,语法是某种语法的描述(您可以具有许多相同语法的替代描述),而语言是一组语法正确的符号序列。 语法通常以所谓的Backus-Naur形式提供。

语言学家使用“语法”一词来命名正确使用该语言的规则集。 规则有许多不同的类型,在这些类型中,句法规则与按正确的顺序排列单词有关。 需要注意的两件事是:(1)是的,您可以不恰当地使用自然语言(世界不会崩溃);(2)语言学家通常并不十分担心给定的句子是否属于某种语言,但是他们有关如何使用语言。

在语言学和计算机科学中,“语义”一词都是指一组规则,这些规则解释了如何解释符号序列。


回答 2:

语法:语言的布局方式。 这包括关键字和标点位置。 例如,Python语法在某些方面与C语法不同,最大的being语句必须在C中以分号结尾,而Python需要处理特定的缩进。

在语法中,您将看到许多开发人员对一种语言(包括我自己)的爱或恨。 我讨厌PHP和JavaScript –它们读起来很丑陋,大的块变得不那么吸引人,并且不必要地变得复杂,并且坦率地说,它们都允许开发人员在推断出的输入范例和不良实践方面变得草。 但是,我喜欢Ruby,因为它的读法非常好,在其中键入的内容更加严格,并且由于语言本身的开发方式,因此块不会变得过于繁琐。 尽管它是C上非常重要的抽象层,但语言构造使它成为一种优雅的语言。

语法:正确的语句顺序使它们有意义,并且可以以尽可能少的计算开销进行处理。 我最近看到的最好的例子之一是一对嵌套的for循环,目的是打印以下内容:

**********

一个更好,更容易理解且计算量更少的收费方法将是使用一系列printf()语句。 良好的程序化语法是随实践而来的,所有新开发人员在追求简单性时都倾向于使事情变得过于复杂。

这并不是说完成目标有对与错。 总是有100种给猫皮的方法,但是只有少数几种具有可接受的Big O表示法,并且通常只有其中两种清晰易辨以至于被认为是高雅的。

语义:语句的意图与语句的实际功能。 语义在口语和编程中都非常重要。 区别在于:即使您的语义很明确,一个人也会误解一个陈述。 计算机将完全按照您编写的内容运行,如果完全不运行,则不会运行,这就是逻辑错误的来源。