web-dev-qa-db-ja.com

最近のC ++はC#を置き換えていますか?マイクロソフトはC ++を採用するよう開発者に要求していますか?

最近のC++の人気と、C#または他のCのような言語からC++への移行についての話を聞きました。

C++ 11の機能については知っていますが、特にC#からC++に移行した開発者からの体験を聞きたいと思います。

さらに重要なのは、Microsoft Push開発者はC++を使用することですか?はいの場合、なぜですか?

93
Amir Karimi

はい、あなたの疑惑は正しいです。マイクロソフトは、C++を復活させ、より人気のあるものにすることを推進しています。

今は見つかりませんが、少し前にマイクロソフトのビッグガイによるプレゼンテーションを見ましたが、すべてが開発者向けで、Windows 8、特にWinRT(.NETフレームワークの代替品)のロールアウトについてでした。 Win32 APIとして)。

彼には、さまざまな圧力が特定の時期に人気のあったテクノロジーにどのように影響しているかを説明するタイムラインがありました。したがって、最初は速度を望んでいたため、すべてC/C++(2つの異なる言語)でコーディングしました。ハードウェアが速くなるにつれて、焦点は実行の速度から離れて開発の速度へと移ったので、より高いレベルの言語がより一般的になりました。

ただし、現在はモバイルおよびARMベースのコンピューター(Windows 8がARM用にコンパイルされる最初のWindowsリリース)に焦点が当てられており、多くの人がはるかに普及し、デスクトップを完全に置き換えるものと信じています。したがって、(少なくともMicrosoftの目には)焦点はC++に戻っています。これは、バッテリーの寿命を重視しているためです。より高いレベルのコード=より多くの指示=より多くのジュースが必要です。

このC++への移行をサポートするために、WinRTと呼ばれる完全に新しいWindows 8プログラミングAPIを導入しました(最後に確認しましたが、いずれにせよその名前です)。このAPIは、提供する機能の範囲で.NET Frameworkのテーマに従いますが、HTML 5/Javascriptアプリを作成したい人は、C++(COMインターフェイス経由)、C#、またはJavaScriptでコーディングしているすべての人が利用できます。また、XAML(最新のUIフレームワークであるWPFで使用されているテクノロジ)をC++でも利用できるようにしています。

つまり、私にとっては、Microsoftでは、以前よりもC++に重点が置かれていることを示しています。

更新#1:

私はこのための「ナイスアンサー」バッジを取得したので、おそらく戻ってきて、a)いくつかのことを明確にし、b)事実確認の警察を幸せにする必要があると考えました。それは何年も続く。

  1. WinRTは.NETフレームワークの代替ではありませんが、MS Windows開発者が現在持っているもう1つの代替手段であり、MSは人々をその方向に向けて強く推進しています。通常のデスクトップアプリでもWinRTを利用できるはずですが、WinRTは主にモダンUIアプリを対象としていたようです(これが100%正確でない場合は注意してください)。そうは言っても、MSは、人々が.NETフレームワークを使用している人々のバランスシフトの割合が低下する可能性があるため、a)最新のUIアプリとb)WinRTの使用を開始するように切り替えることを強く求めています。

  2. C++は、C#やpythonなどの高レベルの言語を置き換えません。これらの言語がC++を置き換えることは決してないのと同じです。これはおそらくOPの質問の中で最も物議を醸した部分でした。しかし、それはバランスについてすべてであり、事実は次のとおりです。

    • C++コミュニティ(MSがその大部分を占める)は、C++を低電力デバイス向けの優れた言語として位置づけるための強力な復活を求めています。その市場シェアは最近、狂ったように上昇しています。私を信じないなら、去年から始まった「GoingNative」シリーズのトークを検索してください。
    • マイクロソフトのあらゆる努力と影響力により、C++の使用率は確実に上昇しますが、C#は何を落とすかもしれません。これはMSが推進していることであり、上記のコメントで述べたように、MSが資本をアイデアの背後に置くと、業界の大部分をシフトします。私はおそらく、「どの業界、私は常にLinuxを使ってきたのか」と主張する人からの応答を受け取るでしょう。はい、他にもOSはありますが、現在の消費者とビジネスの両方のデスクトップ市場の大部分はWindowsであり、時間の価値を最大化したいと考える真面目な開発者は、デスクトップ市場のそのチャンクをターゲットにしないのは非常に愚かです。

結論として:はい、MSはC++の復活を強く求めているので、その人気は高まるでしょう。いいえ、C++がC#を置き換えることはありません。

アップデート#2:

理由はわかりませんが、現実がグレーの色調でいっぱいの場合、技術コミュニティは非常に絶対的な白黒の用語で物事を見る傾向があります。これは、この投稿に追加されたいくつかの新しいコメントへの応答です。

  1. .NETフレームワークは、すぐに(またはこれから)消えることはありません。 90年代以降にWindowsで使用されていたほぼすべてのテクノロジが、まだ何らかの形または形式で存在しています。したがって、.NETフレームワークに非常に関連付けられている場合は、a)消えることを心配しないでください。b)人生がそれに依存しているかのように主張するのをやめ、APIは安全です。

  2. WinRTは、以前はWin32および.NETフレームワークAPIによって提供されていた多くの機能を再実装します。その機能が必要な人は、WinRT、.NETフレームワークを使用するか、Win32 APIを続行するかを選択することができます(どちらも死んではいません)。 WinRTが今日のWebアプリケーションの簡単な作成をサポートしていない場合、将来的にそれらをサポートする可能性が非常に高くなります。

マイクロソフトが発表した立場は、WinRTは、Microsoftに白紙の状態から始める機会を与え、Win32 APIと.NETフレームワーク自体で学んだ教訓を使用してAPIを構築する大きなフレームワークであるというものです。私はそのビデオを探してみましたが、まだそれを見つけることができませんが、スピーカーが言及したことの1つは、.NETフレームワークの特定の領域がより良く/より簡単/より明確に定義でき、WinRTが同じ機能を公開していることですその新しいクリーナーインターフェイスで。

95
DXM

いいえ、Windows 8は、仕事を完了するために(または知っているために)必要な言語をすべて使用することを目的としています。 JavaScript、.Net言語(C#)、およびC/C++はすべて同等にサポートされています。

何も置き換えられることはなく、結局のところ開発者次第です。ただし、WinRTが容易にする、より良いバッテリ寿命のためのプッシュがあります。

例外は、特にWindows Phone 8でC++がより多くのサポートを得ているゲームですが、マネージ言語にはネイティブサポートがありません(別名xna)。

22
Daniel Little

C++ 11の機能について知っているが、あなたの経験を聞きたい

人々がC#よりもC++(または1990以外のポスト[PHP以外]の代替手段)を汎用プログラミングに好むと考えるのは笑えるです。 C++ 11はいくつかの良い欠けているビットを追加しますが、それは 犬に足を釘付け です。

C++にはいくつかの優れたニッチがあり、コンパイラーのサポートが制限されている一部のプラットフォームでは、依然として最良のオプションです。しかし、いや、現代のC++は、おそらく時代遅れで壊れたC++を除いて、何にも置き換わるものではありません。

19
Telastyn

DXMは書きました:

したがって、(少なくともMicrosoftの目には)焦点はC++に戻っています。これは、バッテリーの寿命を重視しているためです。より高いレベルのコード=より多くの指示=より多くのジュースが必要です。

この言葉によると、JavaをGoogleの主要言語/フレームワークとして選択するAndroidは間違いでした。それは間違いではありませんでした。より高いレベルの言語は通常、物事をより速く行うことを意味し、これはMicrosoftとGoogleにとって最も重要なことだと思います。プラットフォーム用に作成されるアプリケーションの数が増えるほど、OSプロデューサーの利益も高くなります。

一方で、まだC++で書かれたWindows用のソフトウェアはたくさんあるので、それらの開発者にC#/ JavaScript /その他のものに切り替えるように強いるのは狂気でしょう。マイクロソフトは、可能な限り多くの開発者にWin8アプリを開発する可能性を与えることに焦点を当てています。そのため、私の意見では、Win8開発スタックでC++とJavaScriptをサポートすることにしました。

2
rotman

C++にはまだヘッダーファイル、柔軟なプリプロセッサ(#define)などがあります。そのようなものは、一部の人々がこれらの機能を「悪」または「管理が難しい」と考えていました。

一方、C#はメタデータを使用します。ヘッダーファイルを作成して維持する必要はありません。

MicrosoftがC++に機能を追加することについて:不思議なことではありません。

すべてのC++コンパイラは、C++ 11機能を含む、より多くの機能を追加しています。 gccもです。

2
linquize

それは私だけかもしれませんが、C++よりもはるかに単純なCの使用法がわかります。

C++がプレーンなC全体を飲み込んだという事実は、誰が何を使用しているかを推測することを難しくします。

しかし、C++よりもはるかに多くのCオープンソースプロジェクトがあります。

私の見解では、メタルスピードに近いものが必要な場合はCを使用します。妥当なパフォーマンスで柔軟性と管理性が必要な場合は、C#またはJavaを使用します。すっきりとしたデザインをすばやく作成したい場合は、Python、Scala、Groovy、または多数の機能を備えた言語を使用してください。

1
James Anderson

c ++はc#を置き換えません。 c ++言語が使用されている場所を調べてみましょう。高いパフォーマンス、ミドルウェアライブラリの記述、低レベルのアクセス、リソースに制約のあるデバイス用のコードの記述が必要な場合に使用されます。これらの一部にはc#を使用できますが、c ++の方が適しています。 MicrosoftのPush for c ++は、モバイルスペースへの大きなプッシュと非常に関連しています。次のWebアプリをC++で作成するように依頼される人は誰もいません。しかし、Qtでは、生産性に関する議論をc ++に対して行うことはできません。しかし、多くの人がQtに慣れていないと思います。

0
Jaak