3

C#言語仕様では、プログラムは次のように定義されています。

コンパイラへの入力をプログラムします。

アプリケーションが次のように定義されている間

エントリポイントを持つアセンブリを適用する

しかし、彼らは定義します

プログラムのインスタンス化—アプリケーションの実行。

「プログラム」の定義を考えると、これは...

アプリケーションのインスタンス化—アプリケーションの実行。

代わりは?

4

3 に答える 3

3

私の知る限り、この用語はMicrosoftバージョンの仕様には含まれていません。注釈付きのECMA仕様には、「プログラム」の後に次の注釈が付いています。

プログラム、アセンブリ、アプリケーション、およびクラスライブラリ
このプログラムの定義は、一般的な使用法とは異なります。C#では、プログラムはコンパイラへの単なる入力です。コンパイラの出力は、アプリケーションまたはクラスライブラリのいずれかであるアセンブリです。

ただし、近くに他の注釈はありません。それはやや奇妙に思えますが、それがおそらくMS仕様に表示されない理由です。

于 2011-04-19T20:41:43.413 に答える
3

いいえ。

それらは定義なので、好きなようにすることができます。あなたの間違いは、単語の中に意味的なリンクを見つけようとしているprogramところですが、そこには何もありません。お気づきのように、それらは無関係です。

彼らが言っているのは「これが私たちがこの用語を使う方法です」です。定義が一貫している限り、基本的に用語を選択することに何の問題もありません。foo、、barおよびbazはと同じくらい正確program instantiationでした。名前が内部的に一貫していて、定義が正しい限り、名前は何でもかまいません。それらは単なるラベルです。

program instantiationMicrosoftの誰かが、この用語を一般的な使用法に反映させることがより重要であると明らかに考えていました。この用語programはおそらく同じ扱いを受けていませんが、繰り返しになりますが、これらは単なる名前です。そして、名前は「アトミック」です。この単語programは、用語とはまったく関係がありませんprogram instantiation


それらは単なるラベルであるため、それらの用語は何にでも置き換えることができます。1つの可能性は次のとおりです。

X=コンパイラへの入力。

Y=エントリポイントを持つアセンブリ

Z=の実行Y

名前を他の名前に置き換えても、使用法に違いはありません。

上記の定義をZ新しい用語に置き換えるとXY

XY=の実行Y

これはまだ当てはまります。これは単なるラベルであり、名前からではなく、定義からセマンティックコンテンツを取得します。 XYとの意味的な関係はなくX、との関係Yは偶発的なものにすぎません。


物事の定義、特に技術仕様を読むときは、これを覚えておくことが重要です。同じものに複数の一般的な用語が存在することが多く、正確な仕様で意味をなすほど厳密に定義されていないことが多いため、何かに最適な用語がないことがよくあります。

このような問題に専念する哲学の枝全体があり、あなたが引用するという意味で「対立」を引き起こすことはかなり避けられません。

C#仕様の作成者が選択しました。内部的に一貫している限り、「正しい」ものです。

于 2011-04-19T20:28:26.827 に答える
1

与えられた入力に基づいて、コンパイラが出力するのはプログラムであり、アセンブリ/アプリケーションの形式でのみ、次のようになります。

プログラム、有効—構文規則と診断可能なセマンティック規則に従って構築されたC#プログラム。

私はここで勇敢な一歩を踏み出し、そのような特定の文脈から自分自身を取り除き、英語で利用Program可能な使用法の定義を見ることができると言います:

  1. (6)マシン、特にコンピューターが目的の一連の操作を実行できるようにする一連のコード化された命令。
  2. (7)プログラムされた命令の命令シーケンス。

コンパイラに入力されるものと出力されるものの両方に、上記のラベルを付けることができます。

しかし、実際には、これは英語のセマンティクスに関する質問であるため、投票して終了する必要があります。

于 2011-04-19T20:15:00.343 に答える