6

C ++を学ぶことで、ネイティブアプリケーションを高速で構築できますか?それはプログラマーとして私を助けますか、そして他の利点は何ですか?

C ++を学びたい理由は、JVMと.NET上に構築されたアプリケーションのUIパフォーマンスに失望しているためです。彼らはゆっくりと感じ、またゆっくりと始めます。もちろん、本当に悪いプログラマーは、C ++を使用して、遅くて遅いアプリケーションを作成することもできますが、私はその場合を考慮していません。

私のお気に入りのWindowsユーティリティアプリケーションの1つはLaunchyです。そして、Readme.pdfファイルで、プログラムの作成者は次のように書いています。

0.6これは最初のC++リリースです。C#の大きな.NET Framework要件に不満を感じ、ユーザーがC#をインストールしたくないという理由で、より高速な言語に切り替えることにしました。

.NET Frameworkの要件、さらにはデスクトップアプリケーションのJRE要件について、Launchyの作成者に完全に同意します。それらの特定のバージョンは言うまでもありません。そして、私のお気に入りの最高のデスクトップアプリケーションのいくつかは、実行するのに.NETやJavaを必要としません。インストール後に実行されます。それらは主にC++を使用して構築されていますか?C ++は、優れた高速GUIベースのアプリケーションの唯一のオプションですか?

また、C++を学ぶことのその他の利点についても非常に興味があります。

4

9 に答える 9

6

うん、C++は絶対に素晴らしいです。Qtを確認してください。Pythonバインディングも優れているため、Pythonで簡単にプロトタイプを作成できます。さらにパフォーマンスが必要な場合は、C ++への移植はほとんど1:1の変換です。

しかし実際には、優れたプラットフォームを使用している場合でも、C ++を作成するのはそれほど難しくありません。最悪の部分は、すべてのクラス宣言を作成することです:-)

于 2008-10-03T18:58:05.363 に答える
5

.NETや仮想マシン/インタープリターなどのフレームワークなしで実行されるWindowsアプリケーションを構築する場合、実際に実行可能な選択肢はVisualBasicまたはC/C++のみです。

私は以前にいくつかの小さなWindowsアプリをC++コードで作成しましたが、開発の難しさを犠牲にして、速度と展開の容易さの点で間違いなく利点があります。C ++は非常に高速で、ネイティブにコンパイルでき、多くの最新言語機能を備えており、幅広いサポートがあります。トレードオフは、特定の状況でより多くのコードを作成するか、必要な機能を提供するBoostなどのライブラリを探す必要がある可能性が高いことです。

プログラマーとして、C ++、特にCで作業することは、.NET、Java、またはVBScript、Python、Perlなどのスクリプト言語よりも少しだけマシンに近いものを理解するのに役立つ良い経験です。必ずしもそうとは限りません。あなたをより良いプログラマーにしますが、それから新しい教訓を学ぶことにオープンであるならば、それがあなたがソフトウェアについての新しい見方を得るのを助けることに気付くかもしれません。結局のところ、依存しているフレームワークとシステムのほとんどは純粋なCで記述されているため、基礎を理解するのに害はありません。C ++はストレートCとは別の動物ですが、C ++ for Windowsで開発する場合は、CとC++を組み合わせてWindowsAPIを操作していることに気付く可能性が高いため、トリクルダウン効果があります。

于 2008-10-03T18:57:12.277 に答える
5

私は C++ Windows アプリを 10 年間作成し、約 2 年前に最新の製品に取り組むために c# に切り替えました。C# アプリがいかに哀れであるかに当惑しています。起動には20秒かかり、画面が切り替わるまで1秒ほど待つ必要があります。サード パーティ製の GUI コントロール ライブラリを使用しましたが、ふるいのようにメモリ リークが発生します。私のアプリは 150 メガで動作し、ほとんど何もしていません。

私はC++に戻りたいと思っています。

MFC を使用できます。.Net よりもはるかに高速です。または、本当に書き込みたい場合は、WTL を調べてください。ただし、そのためのドキュメントはあまりありません。MFC または Qt のいずれかを使用することをお勧めします。それらに関する優れた情報とチュートリアルが豊富にあるからです。

C# を使用すると、より迅速に開発できることがわかります。おそらく、将来のバージョンでは、より迅速かつ小型になるでしょう。

于 2008-10-03T19:16:43.250 に答える
4

いつものように。場合によります。MFC、.netなど、Microsoftの大規模なフレームワークから離れている限り、アプリケーションは非常に高速ですが、コーディングは困難です。あなたの利点:あなたは本当に窓がその素敵な(?)表面の後ろでどのように働いているかを学ぶでしょう。COM-Objectsの初期化コードを調べるだけで、私が何を意味するかがわかります。あなたはVBやC#でそのようなものを見ることは決してないでしょう

各ボタン、各ウィンドウ、および各コントロールを自分でプログラムして、ばかげたウィンドウメッセージを送信する必要がありますが、アプリケーションは小さく、非常に小さいです。これは忘れられた芸術です:

小さくて速いプログラムを書く

幸運を!

于 2008-10-03T18:46:35.870 に答える
4

あなたは私の答えを嫌うでしょう:

GUI開発の最大のボトルネックは、通常、言語によるものではありません。ほとんどの場合、ほとんどのアプリケーションでUIはアイドリング状態であり、ユーザー入力を待っています。すでにあなたの悲鳴が聞こえますが、ほとんどのアプリで言いました。

このように言いましょう。.NetCLRの上に優れたUIを設計できると確信しています。C ++を学ぶことは良いことですが、優れたUIを開発するための固有の問題を解決することはできません。

于 2008-10-03T18:53:16.620 に答える
3

Win32 の生の、ザラザラした詳細を学習することに専念している場合は、C++ がその目的を達成します。そうでない場合は、とにかくたくさんのラッパーを使用することになります。小さなユーティリティのようなもの、または特にシェル拡張のようなもの (.NET を使用しようとすると問題が発生する場合) の場合、C++ を使用すると、外部依存関係を最小限に抑えて効果的なコードを記述できます。大規模なアプリである YMMV の場合、UI の動作が遅くなる原因の多くは設計の悪さです: 単純なアルゴリズム、重要な操作を別のスレッドにスピンオフすることへの不本意、不適切に作成されたサードパーティ コンポーネントへの依存。カスタム コントロール... どの言語でも簡単に間違いを犯します。

于 2008-10-03T19:04:59.810 に答える
2

これが私の正直な答えです。

まず、すべてのプログラマーは C/C++ を学ぶべきだと思います。C++ を学ぶことでプログラミングについて学ぶことができるからです。システムレベルの言語です。メモリ管理などの詳細を考慮する必要があります。プログラミング言語やコンピューター システムの基本的な側面を理解していないプログラマーの多さにショックを受けています。C/C++ を学習することで、より親密なレベルでプログラミングを理解するようになります。その上、C/C++ でプログラミングする方法を学べば、ほとんど何でもプログラミングできます。

これは、C/C++ が常にその仕事に適したツールであると言っているわけではありません。デバッグするのは非常に面倒で、より意味のあるコードを書くには時間がかかります。ただし、プログラムの実行方法を完全に制御する必要がある状況には最適です。

つまり、私は UI プログラミングに C/C++ を好みません。実行している OS (MFC、Win32、Motif、GTK、QT など) に固有のウィンドウ フレームワークを使用する必要があります。これらのフレームワークは、簡単に習得できるものではありません。少なくとも Windows 開発では、.NET は実際には UI 開発の未来です (驚くべきことに、MFC は Vista 向けに大規模なオーバーホールを行い、.NET がまだ行っていないことを行っています)。UI を .NET で作成すると、保守が容易になり、他のユーザーも保守しやすくなります。

私は通常、UI を .NET で記述し、バックエンドを C++ で記述します。

于 2008-10-03T19:10:52.857 に答える
1

はいといいえ。最適化がすべてです...そしてC++では低レベルでの作業が可能になるため、C++は高速なアプリケーションを作成するのに最適な言語の1つです。ただし、C ++で実装されたこれらの低レベルのメカニズムは、OOPへのより抽象的なアプローチに慣れている場合は非常に煩わしいものになる可能性があります。C ++でのソフトウェアのテストは、通常、長いプロセスです。とにかく速度を探しているなら、C++は間違いなく最良の選択の1つです。

于 2008-10-03T18:57:27.113 に答える
0

実際、C++ を使用すると、(正しく実行すれば) より無駄のない、無駄のない、より高速なアプリケーションが得られる可能性があります。

ただし、.NET フレームワークは、開発者の観点から快適に構築されています。Win32 API や MFC よりも大幅に改善されていますが、比較すると大変な作業に思えるかもしれません。そのため、アプリケーションが .NET に依存する側面をどのように実装するかを検討してください (MFC や Win32 API よりも簡単な他のフレームワークが利用可能です)。 、また、そのようなフレームワークを使用するコストとライセンスの問題も考慮してください。たとえば、無料の VC++ Express Edition には MFC サポートが含まれていません。

アプリケーションのどこが遅いかわかっている場合は、C++/CLI が解決策になる可能性があります。マネージド コードとネイティブ コードを混在させて、必要な部分を高速化できます。ただし、アプリケーションの処理よりも本質的に遅いのが GUI である場合。これは有用なパスではない可能性があります。

于 2010-04-27T11:38:58.487 に答える