首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#语言规范“程序实例化”似乎是错误识别的。

C#语言规范“程序实例化”似乎是错误识别的。
EN

Stack Overflow用户
提问于 2011-04-19 19:55:45
回答 3查看 170关注 0票数 3

在C#语言规范中,程序定义为

程序编译器的输入。

而应用程序被定义为

Application具有入口点的程序集

但是,他们定义了

程序实例化-应用程序的执行。

考虑到“计划”的定义,这不是应该.

应用程序实例化-应用程序的执行。

而不是?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-19 20:41:43

据我所知,这个术语没有出现在规范的Microsoft版本中。带注释的ECMA规范在“Program”之后有这个注释:

程序、程序集、应用程序和类库 这个程序的定义与常用的不同。在C#中,程序只是编译器的输入。编译器的输出是一个程序集,它要么是应用程序,要么是类库。

不过,附近没有任何其他注释。这看起来确实有些奇怪,这也许就是为什么它没有出现在MS规范中。

票数 3
EN

Stack Overflow用户

发布于 2011-04-19 20:28:26

不是的。

它们是定义,所以它们可以成为他们想要的任何东西。您的错误是试图在单词program中找到一个语义链接,这里没有任何语义链接。正如你已经注意到的,它们是不相关的。

他们说的是“这就是我们使用这个术语的方式”;只要定义是一致的,选择任何术语基本上都没有错。foobarbaz应该和program instantiation一样正确。只要名称在内部是一致的,定义是正确的,名称就可以是任何东西。只是标签而已。

显然,微软的一些人认为,更重要的是,program instantiation这个词应该反映在它的通用用法中。术语program可能没有得到相同的待遇,但是,再说一遍,它们只是名字。名字是“原子的”:program这个词和术语program instantiation一点关系都没有。

因为它们只是标签,所以它们的术语可以被任何东西所取代。一种可能是:

X =编译器的输入。 Y =具有入口点的程序集 Z = Y的执行。

将任何名称替换为任何其他名称都不会改变它们的用法。

如果我将Z的上述定义替换为新的术语XY

XY = Y的执行

这个还能用。它只是一个标签,它从定义中获取语义内容,而不是从它的名称中获取语义内容。XYX没有语义关系,与Y的关系只是偶然的。

当您阅读事物的定义,特别是技术规范时,记住这一点是很重要的。对于某事物通常没有最佳的术语,因为对于同一件事通常有多个通用的术语,而且它们的定义往往不够严谨,无法在精确的规范中有意义。

有一个整个哲学分支致力于这样的问题,在你所引用的意义上引起“冲突”几乎是不可避免的。

C#规范的作者做出了他们的选择,只要它是内部一致的,它就是“正确的”。

票数 3
EN

Stack Overflow用户

发布于 2011-04-19 20:15:00

根据给定的输入,编译器输出的仍然是程序,仅以程序集/应用程序的格式输出,例如:

程序,有效的--一个根据语法规则和可诊断语义规则构造的C#程序。

我将在这里迈出勇敢的一步,说我们可以从这样一个特定的上下文中移开,看看Program的可用定义。

  1. (6)一组编码指令,使机器,特别是计算机,能够执行所需的操作顺序。
  2. (7)程序指令中的指令序列。

向编译器输入的内容和输出的内容都可以通过上面的标记来标记。

但实际上,我要投票结束,因为这是一个关于英语语义学的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5721908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档