-3

ネイティブ コードに対するマネージ ランゲージの実際の利点は何だろうと思っています。

移植性: C#/Jave にはプラットフォームごとに VM 実装が必要であり、c++ にはコンパイラが必要です。

ガベージ コレクター: メモリの割り当て/解放をチェックするスレッドを C++ で作成できます

反射:ネイティブ コードで同様のメカニズムを使用できる可能性があります (???)

今日、マネージ コードは多くの人気を得ていますが、ネイティブ コードには、一般的により効率的で軽量であるという利点があります。つまり、ターゲット プラットフォームに VM を配置する必要がありません。一方、私によると、マネージド コードはそれほど大きくありません。間違っていますか? マネージ コードは、アプリケーションの大部分で従うべき良い方法ですか?

4

2 に答える 2

2

移植性に関するあなたの声明:

C#/Jave には各プラットフォームの VM 実装が必要であり、C++ にはコンパイラが必要です。

完全に正しくない、または明らかに正しい - C#、VB.NET、Java などは IL、バイトコードなどに一度コンパイルする必要がありますが、C++ はプラットフォームごとに異なるバージョンにコンパイルする必要があり、変更が必要になる場合もあります。使用される DLL (存在する場合) またはメモリを管理するためのメソッド。

ガベージ コレクションに関しては、C++ のスレッドでそれを行うことについてあまり知りません。しかしマネージ コードでは、ガベージ コレクターを作成するために何もする必要はありません。それはすでにそこにあります。また、マネージ言語では、必要なことを実行するために記述するコードが大幅に少なくなる傾向があり、これは明快さにおいて大きな利点があります(これは、アプリケーションの UI を設計するときに特に当てはまります。) また、マネージド コード実行を使用してリアルタイムで最適化を行うことができ、エンジンを改善するために更新を行うことができます。

マネージ コードとアンマネージ コードの両方にはいくつかの利点があり、最終的には何をしているかによって異なります。大規模なプロジェクトはマネージ コードの方が適しており、スピードが必要な部分はアンマネージ コードで実行できると思います。結局、アンマネージ ライブラリはマネージ コードで使用でき、その逆も可能です。

だから、私の意見では、はい、あなたは間違っています。ちょっと主観的な質問ですが。

于 2011-08-30T19:43:12.973 に答える
1

マネージ コードは、ほとんどのアプリケーションに最適な方法です。その理由は、実装が速く、単体テストが簡単で、保守が簡単だからです。

これが当てはまらないアプリケーションも確かにあります。高速である必要があるアプリケーションや、ハードウェアへの特別なアクセスが必要なアプリケーションは、おそらくネイティブ アプリにする必要があります。はい、提供されたサービスをマネージド アプリケーションでネイティブ コードを使用して再実装できますが、なぜ再実装するのでしょうか?

于 2011-08-30T19:45:04.107 に答える