在C#语言规范中,程序定义为
程序编译器的输入。
而应用程序被定义为
Application具有入口点的程序集
但是,他们定义了
程序实例化-应用程序的执行。
考虑到“计划”的定义,这不是应该.
应用程序实例化-应用程序的执行。
而不是?
发布于 2011-04-19 20:41:43
据我所知,这个术语没有出现在规范的Microsoft版本中。带注释的ECMA规范在“Program”之后有这个注释:
程序、程序集、应用程序和类库 这个程序的定义与常用的不同。在C#中,程序只是编译器的输入。编译器的输出是一个程序集,它要么是应用程序,要么是类库。
不过,附近没有任何其他注释。这看起来确实有些奇怪,这也许就是为什么它没有出现在MS规范中。
发布于 2011-04-19 20:28:26
不是的。
它们是定义,所以它们可以成为他们想要的任何东西。您的错误是试图在单词program中找到一个语义链接,这里没有任何语义链接。正如你已经注意到的,它们是不相关的。
他们说的是“这就是我们使用这个术语的方式”;只要定义是一致的,选择任何术语基本上都没有错。foo、bar和baz应该和program instantiation一样正确。只要名称在内部是一致的,定义是正确的,名称就可以是任何东西。只是标签而已。
显然,微软的一些人认为,更重要的是,program instantiation这个词应该反映在它的通用用法中。术语program可能没有得到相同的待遇,但是,再说一遍,它们只是名字。名字是“原子的”:program这个词和术语program instantiation一点关系都没有。
因为它们只是标签,所以它们的术语可以被任何东西所取代。一种可能是:
X=编译器的输入。Y=具有入口点的程序集Z=Y的执行。
将任何名称替换为任何其他名称都不会改变它们的用法。
如果我将Z的上述定义替换为新的术语XY
XY=Y的执行
这个还能用。它只是一个标签,它从定义中获取语义内容,而不是从它的名称中获取语义内容。XY与X没有语义关系,与Y的关系只是偶然的。
当您阅读事物的定义,特别是技术规范时,记住这一点是很重要的。对于某事物通常没有最佳的术语,因为对于同一件事通常有多个通用的术语,而且它们的定义往往不够严谨,无法在精确的规范中有意义。
有一个整个哲学分支致力于这样的问题,在你所引用的意义上引起“冲突”几乎是不可避免的。
C#规范的作者做出了他们的选择,只要它是内部一致的,它就是“正确的”。
发布于 2011-04-19 20:15:00
根据给定的输入,编译器输出的仍然是程序,仅以程序集/应用程序的格式输出,例如:
程序,有效的--一个根据语法规则和可诊断语义规则构造的C#程序。
我将在这里迈出勇敢的一步,说我们可以从这样一个特定的上下文中移开,看看Program的可用定义。
向编译器输入的内容和输出的内容都可以通过上面的标记来标记。
但实际上,我要投票结束,因为这是一个关于英语语义学的问题。
https://stackoverflow.com/questions/5721908
复制相似问题