c#语言规范;程序实例化;似乎是被认错了
本文关键字:似乎是 认错 错了 实例化 程序 语言 | 更新日期: 2023-09-27 17:50:41
在c#语言规范中,程序被定义为
程序编译器的输入。
当应用程序被定义为
时应用程序具有入口点
的程序集
但是,它们定义了
程序实例化 -应用程序的执行。
根据"程序"的定义,这不应该是…
应用程序实例化 -应用程序的执行。
?
据我所知,这个术语在微软版本的规范中没有出现。注释的ECMA规范在"Program"后面有如下注释:
程序、程序集、应用程序和类库
程序的这个定义不同于通常的用法。在c#中,程序只是编译器的输入。编译器的输出是一个程序集,它可以是一个应用程序或一个类库。
附近没有任何其他注释。它确实看起来有些奇怪,这也许就是为什么它没有出现在MS规范中。
No.
它们是定义,所以它们可以是他们想要的任何东西。你的错误是试图在单词program
中找到一个语义链接,而实际上没有。正如你所注意到的,它们是不相关的。
他们说的是"这就是我们如何使用这个术语";选择任何术语基本上都没有错,只要定义是一致的。foo
, bar
, baz
和program instantiation
一样正确。只要名称在内部保持一致,并且定义是正确的,名称就可以是任何名称。它们只是标签。
微软的某个人显然认为program instantiation
这个术语应该反映在它的常用用法中,这是更重要的。program
这个词可能没有得到同样的待遇,但是,它们只是名字。名称是"原子的":单词program
与术语program instantiation
根本没有关系。
因为它们只是标签,它们的项可以被任何东西代替。一种可能是:
X
=编译器的输入
Y
=具有入口点的程序集
Z
=Y
.
用其他任何名称替换任何名称对其用法没有影响。
如果我用一个新的术语XY
替换上述Z
的定义:
XY
=Y
的执行
这个仍然成立。它只是一个标签,它从定义中获得语义内容,而不是从它的名称中。XY
与X
没有语义关系,与Y
的关系只是偶然的。
当您阅读事物的定义,特别是技术规范时,记住这一点很重要。对于某件事通常没有最好的术语,因为同一件事通常有多个常用术语,而且它们通常定义不够严格,在精确的规范中没有意义。
有一个完整的哲学分支专门研究这类问题,并引起"冲突"。从某种意义上说,你引用的几乎是不可避免的。
c#规范的作者做出了他们的选择,只要它内部一致,它就是"正确的"。
根据给定的输入,编译器输出的仍然是程序,只是采用汇编/应用程序的格式,因此它是:
程序,有效的 -根据语法规则和可诊断的语义规则构造的c#程序。
我在这里大胆地说,我们可以把自己从这种特定的上下文中移开,看看Program
的可用英语用法定义:
- (6)使机器(尤指机器)能够运行的一组编码指令计算机,执行一个期望操作顺序。
(7)程序指令中的指令序列。
编译器的输入和输出都可以用上面的标记。
但实际上,我将不得不投票结束,因为这是一个关于英语语义的问题