这是来自Eric Lippert's blog的句子:
鉴于这种不幸的情况,它 有意义强调存储 首先是机制,然后是 语义第二。
很容易得到dictionary definition“语义”的意思,但它在计算机术语方面意味着什么?
答案 0 :(得分:26)
但就计算机行话来说意味着什么?
基本上是一样的。例如:
x = 5;
以上是语法(表示)。该术语的含义(即语义)是将值5赋给称为x
的符号(变量,无论如何)。不同的语言提供不同的语法来提供相同的语义。例如,上面的赋值将写为
x := 5;
Pascal中的和
x <- 5
用其他几种语言。在所有情况下,含义基本相同。但有时,相同的语法也可以具有不同的含义,具体取决于语言和/或上下文。例如,VB将equals运算符重新定义为两个不同的东西。首先是一项任务,如上所述。
其次,在下面的代码片段中,不是分配,而是采用比较两个值的含义:
If x = 5 Then Console.WriteLine("x is 5")
答案 1 :(得分:6)
字典定义适用。
语义是(是?)所有关于词的含义。
例如,如果使用.NET类型KeyValuePair来表示除键和值之外的其他内容,则会出现语义问题。它可能有用......它可能是最好的解决方案,但它在语义上并不准确。
这正是他在博文中所谈论的内容。我们首先用C语言列出返回类型,但实际上返回是最后的。这在语义上是不准确的。
答案 2 :(得分:6)
语义是我们的意思,程序应该做什么。 Sytax是我们表达语义的语言特定约束。
理论上,只要程序的语义是正确的,使用什么语言写它就没关系。
答案 3 :(得分:4)
就编程语言术语而言,有几种语义概念:
静态语义告诉您哪些语法程序也很好。许多语言要么没有静态语义(Scheme,Ruby,Python,Icon,Lua,Perl),要么具有静态语义,主要是关于实现类型系统(Java,C,C#,Haskell)。 “使用前需要声明”是另一种可能的静态语义。静态语义回答了“这个程序有意义吗?”的问题,并在编译时这样做。
动态语义告诉您以下两件事之一:
如果您在手册或文章中读到“语义”一词,并且上下文是非正式的英语而不是精确的数学描述,那么作者可能会提到动态操作行为 - 如果您愿意的话,可以非正式地描述操作语义。这种非正式的描述对编译器编写者和编程人员非常有帮助。
答案 4 :(得分:3)
据我了解,语义是“对人类意味着什么”。这是它所支持的 ,而不是如何。
答案 5 :(得分:3)
换句话说,鉴于文章的背景,他说,C#
的开发人员更好地专注于在声明变量时内部存储数据的方式而不关心关于指定声明变量的精确方法非常重要。
换句话说,在C#
static int customerCount
您告诉编译器为可静态访问的整数准备存储,然后告诉它将该存储标记为customerCount
而在VB中你会使用这一行
dim shared customerCount as Integer
在理论上告诉编译器你有一个名为customerCount
的变量,它应该存储并使其静态可用,顺便说一下,它恰好是一个整数。
这一切都是一种很好的区别。
答案 6 :(得分:3)
博客的更多内容:
因此在C中你放了存储空间 首先是元数据(静态int customerCount;)而不是 首先是语义学(它可能是 var customerCount:static int;)。
他说“static int”出现在“customerCount”之前。调用“static int”存储元数据和“customerCount”语义。 存储元数据是关于变量保持什么的信息 - 隐含在其中的是它占用了多少位,它可能包含的值,是否在实例之间共享以及它的波动性。
变量名语义是代码读者关于应该存储在变量中的内容的信息。变量的含义是什么。您可以将其称为“x”,程序也可以正常工作,但程序员很难理解它。将其称为“customerCount”为变量提供了意义,这就是语义。