最近のC ++の人気と、C#または他のCライクな言語からC ++への移行についての話を聞きます。
私はC ++ 11の機能について知っていますが、特にC#からC ++に移行した開発者からのあなたの経験を聞きたいです。
さらに重要なこととして、Microsoftは開発者にC ++の使用を促していますか?はいの場合、なぜですか?
最近のC ++の人気と、C#または他のCライクな言語からC ++への移行についての話を聞きます。
私はC ++ 11の機能について知っていますが、特にC#からC ++に移行した開発者からのあなたの経験を聞きたいです。
さらに重要なこととして、Microsoftは開発者にC ++の使用を促していますか?はいの場合、なぜですか?
回答:
はい、あなたの疑いは正しいです。Microsoftは、C ++を復活させて人気を高めようとしています。
私は今それを見つけることができませんが、少し前にマイクロソフトの大物の1人によるプレゼンテーションを見て、すべてが開発者向けで、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 ++に以前よりも確実に重点が置かれていることを示しています。
これに対して「いい答え」のバッジを受け取ったので、多分私は戻ってきて、a)いくつかのことを明確にし、b)事実確認警察を幸せにするべきだと思ったそれは何年も続きます。
WinRTは.NETフレームワークに代わるものではありませんが、MS Windows開発者が現在持っているもう1つの代替手段であり、MSはその方向に進むように人々を強く推進しています。通常のデスクトップアプリでも活用できるはずですが、WinRTは主にModern UIアプリを対象としていたようです(これが100%正確でない場合は炎を保持してください)。そうは言っても、MSは人々がa)最新のUIアプリを作成し、b)WinRTの使用を開始するよう強く求めています。
C ++は、C#やpythonなどの高レベル言語を決して置き換えません。これらの言語がC ++を決して置き換えないように。これはおそらくOPの質問の中で最も議論の余地のある部分だった。しかし、それはすべてバランスについてであり、事実は次のとおりです。
結論として、はい、MSはC ++の復活を推し進めているため、その人気が高まる可能性が高いです。いいえ、C ++がC#を置き換えることはありません。
理由はわかりませんが、技術コミュニティは、現実が灰色の色合いでいっぱいの場合、非常に絶対的な黒/白の用語で物事を見る傾向があります。これは、この投稿に追加されたいくつかの新しいコメントへの応答です。
.NETフレームワークはすぐに(またはこれまでに)なくなることはありません。90年代以降のWindowsにあったほぼすべてのテクノロジーは、まだ何らかの形または方法で存在しています。したがって、.NETフレームワークに非常にアタッチされているものについては、a)それが消えることを心配しないでください。
WinRTは、これまでWin32および.NETフレームワークAPIによって提供されていた多くの機能を再実装します。その機能が必要な人は、WinRT、.NETフレームワークを使用するか、Win32 APIを継続するか(どちらも死んでいない)を選択できます。現在、WinRTがWebアプリケーションの簡単な作成をサポートしていない場合、将来それらをサポートする可能性が非常に高くなります。
マイクロソフトが発表した立場は、WinRTは大きなフレームワークであり、Microsoftがクリーンな状態で開始し、Win32 APIおよび.NETフレームワーク自体で学んだ教訓を使用してAPIを構築する機会を与えたということです。私はそのビデオを探してみましたが、まだ見つかりませんが、スピーカーが言及したことの1つは、.NETフレームワークの特定の領域がより良い/シンプル/クリーナーと定義されていて、WinRTが同じ機能を公開していることですその新しいクリーナーインターフェイス。
Full
.NETプロファイルと「WinRT」.NETプロファイルの間にわずかな違いしかありません。大きな違いは、10〜15年前に実装が不十分だった多くのものが削除され、より良いデザインのコードに置き換えられたことです。Win32ライブラリをすべて削除するまで、.NETはそのままです。あなたのコメントは、.NETおよびC#言語自体に関して完全かつ完全な知識不足を示しています。
いいえ、Windows 8は、仕事を遂行する(または知る)ために必要な言語を使用することについてすべてです。JavaScript、.Net言語(C#)およびC / C ++はすべて等しくサポートされています。
置き換えられるものはなく、いずれにしても最終的には開発者に任されます。ただし、WinRTが簡単にするバッテリー寿命の向上が求められています。
例外は、特にWindows Phone 8でC ++がより多くのサポートを得ているゲームで、マネージド言語にはネイティブサポートがありません(別名xna)。
私はC ++ 11の機能について知っていますが、あなたの経験を聞きたいです
汎用プログラミングでは、人々がC#よりもC ++(または1990年以降の[php以外]の代替案)よりもC ++を好むという考えは笑えます。C ++ 11はいくつかの優れた欠落ビットを追加しますが、それでも犬に足を釘付けしています。
C ++には優れたニッチがあり、コンパイラサポートが制限されている一部のプラットフォームでは依然として最適なオプションです。しかし、いや、現代のC ++は、おそらく時代遅れで壊れたC ++を除いて、どこにも置き換わるものではありません。
DXMの書き込み:
そのため、(少なくともMicrosoftの目には)焦点はC ++に戻っています。これは、現在、バッテリの寿命を重視しているためです。より高いレベルのコード=より多くの指示=より多くのジュースが必要です。
この言葉によると、JavaをGoogleのAndroidの主要言語/フレームワークとして選択するのは間違いでした。そうではありませんでした。高いレベルの言語とは、通常、物事をより速く行うことを意味し、これはマイクロソフトとグーグルにとって最も重要なことだと思います。プラットフォームに対してより良いアプリケーションが作成されるほど、OSプロデューサーの利益は高くなります。
一方、Windows用のソフトウェアはまだC ++で作成されているため、これらの開発者にC#/ JavaScript /他のものに切り替えるように勧めるのは正気ではありません。マイクロソフトは、可能な限り多くの開発者にWin8アプリを開発する可能性を提供することに注力しているため、Win8開発スタックでC ++とJavaScriptをサポートすることにしました。
C ++にはまだヘッダーファイル、柔軟なプリプロセッサー(#define)などがあります。一部の人々は、これらの機能を「悪」または「管理が難しい」と考えています。
一方、C#はメタデータを使用するため、ヘッダーファイルを作成および管理する必要はありません。
MicrosoftがC ++に機能を追加することについて:不思議な問題ではありません。
すべてのC ++コンパイラは、C ++ 11機能などの機能を追加しています。gccもです。
それは私だけかもしれませんが、C ++よりもはるかに単純なCの使用法を見ています。
C ++がプレーンC全体を飲み込んだという事実は、誰が何を使用しているのかを推測するのを難しくしています。
しかし、C ++よりもはるかに多くのCオープンソースプロジェクトがあります。
私の考えでは、メタルスピードに近い必要がある場合はCを使用します。合理的なパフォーマンスで柔軟性と管理性が必要な場合は、C#またはJavaを使用します。クリーンな設計をすばやく行うには、Python、Scala、Groovy、またはいくつかの完全に機能する言語を使用します。
c ++はc#を置き換えていません。C ++言語が使用されている場所を見てみましょう。高性能、ミドルウェアライブラリの作成、低レベルアクセス、およびリソースに制約のあるデバイスのコードの作成が必要な場合に使用されます。これらの一部にはc#を使用できますが、これらにはc ++の方が適しています。Microsoftによるc ++の推進は、モバイル分野への大きな推進と密接に関連しています。次のWebアプリをC ++で作成するように求められることはありません。しかし、Qtでは、生産性の議論をc ++に対して行うことはできません。しかし、多くの人はQtに慣れていないと思います。
いいえ、すべての非Direct3D Windows Phone 8アプリは C#で開発する必要があるため、C ++でC#を置き換えることはできません。C ++またはHTML5 / Javascriptを使用するだけでは、アプリケーションを開発してwp8アプリストアに公開することはできません。また、Microsoftがこの制限を解除しない限り、C ++は何も置き換えません。その結果、WP8向けに開発する人はほとんどいないと確信しています。貧しいノキア、もう一度負けた。
マイクロソフト開発センターからの抜粋は次のとおりです。
Windows Phone 8は、WindowsストアアプリでサポートされているC ++コードビハインドアプリモデルでのXAML UIをサポートしていません。
これは、C ++とXAMLを使用してWindows PHone 8でアプリを開発できないことを意味しますか?C#+ XAMLの使用に制限されていますか?
それは正しいです。XAMLはC#でのみ使用できます。C ++プロジェクトは、C#プロジェクトで使用されるWinRTコンポーネントに使用できます。
マイクロソフトのMVPでさえ、この噂はマイクロソフト自身による意図的な誤報であると主張しています。
MicrosoftがWinRTとWindows Phone 8で行っていることは気に入っていますが、問題の完全な真実を知ってしまえばユーザーをいらいらさせてしまうので、それを売り過ぎないことを望みます。
そして、この意図的な誤ったマーケティングは人々の数ヶ月を無駄にします:
Metroアプリですべてのネイティブコードのルートをたどる前に、この1か月前を知っていれば良かったと思います。