C# がオープン スタンダードであるのに、.NET がそうでないのはなぜですか? これのポイントは何ですか?Microsoft が .NET の一部のみを公開することにしたのはなぜですか?
5 に答える
.NET ランタイムのさまざまな部分は、C# と同様に ECMA によって実際に標準化されています (CIL、CLI、CLS)。
.NET はランタイムで、C# は言語です。C# は、Mono などの他のランタイムでコンパイルおよび実行できます。Mono 以外のランタイムについては、実際には知りませんが、C# の仕様は公開されているので、それを読んで独自のランタイムを作成できます。;)
C# は、Java、C、C++ などと同様、単なる言語定義です。それ自体では、何もしません。これは、ユーザーがプログラムまたはプロシージャーを定義し、外部ライブラリーとインターフェースできる手段を定義します。
一方、.NET フレームワークは言語ではありません。これは、クラス ライブラリおよび開発フレームワークです。
実際には、オープン スタンダードがあります (言語のECMA 334ではなく、ランタイム API のECMA 335です)。
これを超えて、Microsoft の .Net 実装のソース コードが利用可能であり、複数の個別の実装があります(その中で最も顕著なのはmonoです)。
特許の負担については、さらに懸念があります。ただし、Microsoft は、両方の仕様をカバーする .Net プラットフォームに関する法的拘束力のある取り消し不能なコミュニティの約束も発行しました (多くの人は、法的拘束力のある部分を見逃しています)。
私はあなたがフレームワークを意味すると思います。彼らはWindowsでのライブラリ実装の制御を維持したいと思っていると思います。モノによって行われたように、誰かが自分のソースに基づいてフレームワークの全部または一部の呼び出し互換バージョンを実装することを妨げるものは何もありません。