2009-05-04 6 views
14

Microsoftは、.NETプラットフォームのC++ではなくC#に力を注ぐと聞いています。私は、C#ではなく、C++で利用可能だったGUIデザイナーのために、これが正しいという兆候を見ることができます。C++ .NETは死んでいますか?

私は、.NETのC++が死んでいるのか、それが今後C#の2番目であるのかを知りたいと思います。

+1

文法が*非常に*類似しているC++/CXのおかげで、大量のリースを手に入れました。 IntelliSenseサポートを追加しました。 –

答えて

23

アプリケーション開発で.NETフレームワークを対象とする場合、C++/CLIはC#と比較して2番目の市民です。 C#は具体的にはとして設計されました.NETフレームワークの言語 C++/CLIの拡張により、開発者はネイティブコードとマネージコードを結ぶことができます。

しかし、C++とC++/CLIを混同しないでください(C++ .NETは同じことです...)。 C++は生き残っており、カーネル、ゲーム、ハイパフォーマンス、サーバアプリケーション(例えばSQLサーバ)などの領域では変化が起こりにくい。一方、ほとんどの.NET 'GUI stuff'はC++を使用しません。

+0

ネイティブC++のフレームワークにアクセスできるかどうかはわかりませんでした(C++ .NETと同じ理由です)。 – Unknown

+3

彼は "C++ CLR"は "C++ .NET"と同じです – sharkin

+1

同じアセンブリ内でマネージコードとネイティブコードを使用する場合は、/ clrフラグをC++コンパイラに与える必要があります。基本的にこのフラグを追加すると、コンパイラは.NET Frameworkメタデータをアセンブリに追加します。 また、/ clr:safeおよび/ clr:pureフラグを使用してMSILのみの.NETアセンブリを生成することもできます。この場合、C#とC++は同じです(VB.NET、J#など)。 – Serguei

1

私はそう思う、死ぬ、実際にはすでに死んだ;)、それを使用する人がたくさんいない、彼らはC + +またはC#を使用します。 this

+2

「はい」、そうですか? 「はい、それは死んでいるのですか?それを明確にしてください。 –

+1

はい、私の返信を編集しました – Sadegh

7

管理されたC++は、MSが考えるとは決してなりませんでした。 C#は、(直感的に)より多くの直感的で使いやすい構文で、同じことを行うことができます。

これとは別に、C++/CLIは、.NETアセンブリとネイティブC++アセンブリ間の相互運用機能を簡単に作成できるため、長い間サポートされていません。それはすべてのことだが、私は確信している(私は0.001%のC++/CLI開発者がそこにいると確信している:P)。

+3

C#とネイティブC++の相互運用はできないと言っていますか?私はp/invokeものがC#で完全に使えると思った。 – Unknown

+2

@彼はあなたが言うことができない、彼は "C++/CLIは簡単な方法だ"と言っているわけではない。しかし、私が同意するかどうかはわかりません。なぜなら、C++/CLIの何も私には見えないからです。 –

+5

C++/CLIは、P/Invokeを使用するために必要なスクラッチからSDKヘッダーを書き直すのに比べて、驚くほど簡単です...少なくとも。 – Shog9

6

C++/CLIは、ネイティブC++開発者が.NETに惹きつける方法です。これはネイティブのC++とC#の間の中間層のようでしたが、開発者がネイティブのC++またはC#のどちらかを選択することを好んでいると確信しています。

マイクロソフトでは、少なくとも近い将来、C++/CLIが死ぬことは許されませんが、コミュニティのサポートがなければ、C++/CLIは成長できません。

この世代では、成長は死亡に近いことを意味しません。

+0

一方、プログラミングの世界はかなり成熟しているように見えますが、今後10年間では大した成長は期待できません。比較的一定したユーザーベースで、重要なテクノロジーが長い間生き残れない理由はありません。 –

5

恐れ入りますが、

これは、特別なことはありませんが、新しい言語機能ではありませんが、他の機能(ジェネリック)をコピーするだけの理由です。

主に、MSのC++ for .NETプラットフォーム(Managed C++)を有効にする最初の試みは災害だったからです。
これ以降、彼らはHerb Sutter、C++ guruを雇い、Managed C++置換C++/CLIを設計した素晴らしい仕事をしました。 C++/CLIの設計がManaged C++の設計よりも優れている理由とその理由は、Herbによって書かれたA Design Rationale for C++/CLIを読んで見つけることができます。

ちなみに、Herbはvcコンパイラを、標準適合性に関して最悪の年であるWindowsのための最も標準的な準拠のコンパイラの1つにしました。

+0

私はManaged ExtensionsがC++/CLIよりも優れていると思います。残念なことに、面白い拡張機能を追加し、人々はそれを好まなかったので、さまざまな拡張機能を入れて、管理されたリソースを "ネイティブに"消費する能力を壊しました。ハーブはいいですが、私は彼がC++/CLIでうまくやったとは思いません。 – gbjbaanb

+0

"C++/CLIの設計理論"を読んでいますか? あなたが言っていることから、私はあなたが持っていないと思います... –

+1

Er、gbjbaanb、私が間違っていなければ、管理されたリソースは決してネイティブヒープにはありませんでした。以前は管理対象オブジェクトが管理対象ヒープに残っていたが、それを示す構文がなかったため、^演算子を追加して管理オブジェクトと非管理オブジェクトを区別した。 –

0

私はそれが必ずしも去っていくとは思っていませんが、それを使用する理由はほとんどの場合、それに付随するパフォーマンス上の利点が必要かどうかということになります。 C#がC++の効率の90%で同じことをすることができるなら、それは本当に十分ではありませんか?

2

いいえ、それは死んで生まれました。それは常に活力ロードマップのない第二クラスのcitezenとして扱われてきました。

関連する問題