- ベストアンサー
【VC++】MFC、C++/CLI(CLR)、C#の違い、及び、これからの展望
いつも大変お世話になっています。 VC++初心者です。 VC++6.0(MFC)、VC++2005(CLR)(C++/CLI)(Express Edition)を 同時期に使い始めて何ヶ月か経ちました。 現在では、CLIの方が圧倒的に開発スピードが早く(扱いやすい)、 逆に、MFCの開発スピードが遅く(扱いにくい)、イライラしっぱなしです。 (CLIの開発では、WEBにあるC#のコードを参考にしながら、 コーディングしています。) そこで、何点か疑問に思ったので、ご回答頂けませんでしょうか。 (1)CLIとC#を区別した理由は何なのでしょうか。 (2)MFCはこれからも使われるのでしょうか。 (MFCで新規開発をすることは、まだまだ大勢なのでしょうか。) (3)VC++2005以降、MFCは有償らしいのですが、 VC++6.0(MFC)とVC++2005(MFC)は何か変わったのでしょうか。 (コーディングしやすくなっていますか?) (4)個人差はあると思いますが、開発スピードが一番早いのは、 CLR、C#、MFCのどれでしょうか。 すぐに返信ができないと思いますが、 宜しければ、ご回答頂けると幸いです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
私も私見ですが。 > (1)CLIとC#を区別した理由は何なのでしょうか。 CLIはC++的だが、C#はJava系の文法。近いけど遠い。 要するに慣れ親しんだC++を使いたい人向け。 > (2)MFCはこれからも使われるのでしょうか。 市販ソフトメーカーなど企業で資産のあるところは使っていくでしょうね。シェア・フリーソフトの作家でもそうですが。 C#とCLIは、インストール時に.net frameworkのインストールがあるから嫌われている所があるんじゃないでしょうか。.net系のソフトですよってばれますし。逆コンパイルがネイティブより容易ってのがライセンス認証しているメーカーとかシェアウェア作者さんには気になるポイントでしょう。一応難読化ツールもありますが。 > (4)個人差はあると思いますが、開発スピードが一番早いのは、 > C++/CLI、C#、C++とMFCのどれでしょうか。 C#かなぁ。 まぁ、面倒なソフトになったらどれでもさほど変わり無い気がしますね。ただ、.NET系はガベージコレクションがうれしいですが。
その他の回答 (5)
- zwi
- ベストアンサー率56% (730/1282)
>>初心者ならC#だと思います。 >何故そう思われるのでしょうか? >(C#はC/C++の知識を必要としないのでしょうか?) 知識は必要としないと思います。 C#はポインタを覚える必要もありません(実際にはC#にも存在しますが、使わないと組めない場面は無いと思います) それに、C++とMFCの方が覚える事が多いですし、C++とMFCよりも遥かに用意にWindowアプリを構築できます。 あえて、面倒な世界から入る必要は私は無いと思います。
補足
ご回答ありがとうございます。 C#がお薦めなんですね。 私はC#は未経験なので詳しく分かりませんが、 MFCとC++/CLIを比べると圧倒的にC++/CLIの方が楽ですね。 いつかはは、C#にも挑戦したいと思います。 ご回答、ありがとうございました。
- zwi
- ベストアンサー率56% (730/1282)
>話が脱線していますが、Qtってもういろんなソフトで使われているでしょうか? wikiに書いてありますよ。 有名どころは次の三つかな。 # Adobe Photoshop Elements # Web ブラウザ Opera # Google Earth >そして、(4)の質問と重複する部分がありますが、 >プログラマ初心者に薦めるとしたら、 >MFC、C++/CLI(CLR)、C#のどれがいいと思いますか。 初心者ならC#だと思います。 ただ、.NET系はランタイムライブラリを含めてちゃんと配布するのは実に面倒なので、そこがネックですかね。まぁ、MFCのライブラリの配布も面倒ですけどね。
補足
即答、ありがとうございます。 >>話が脱線していますが、Qtってもういろんなソフトで使われているでしょうか? >wikiに書いてありますよ。 大変、失礼しました。 >初心者ならC#だと思います。 何故そう思われるのでしょうか? (C#はC/C++の知識を必要としないのでしょうか?)
- zwi
- ベストアンサー率56% (730/1282)
>C#は簡単に習得できるかな、と思っていました。 まぁ、クラスの基本的なところは同じですが細かいところは色々違うんですよね。C++のつもりで書くとほとんどエラーになります。JavaやC#はヘッダファイルが無いのが最大の特徴ですかね。 私もC#を勉強中なんですが、JavaにC++の機能を盛り込んだ感じってのが今の印象です。 >.net系のソフトがバレてまずいこと、って何かあるのでしょうか。 逆コンパイルされやすいって事で、ソフトメーカーやシェアウェア作家さんには死活問題でしょうね。ライセンス突破などクラック問題とかリバースエンジニアされやすいのがねぇ。 一応難読化やら暗号化ソフトは色々出てますが、勉強しないと使えない難しいものが多いですよ。 >VC++2005以降のMFはGC(ガベージコレクション)は付いているのでしょうか? 残念ながらありません。C++の標準規格の問題で今のところ無理ですね。次世代C++0xの規格でも見送られましたので、いつになるやら。 http://ja.wikipedia.org/wiki/C%2B%2B0x >余談になるのですが、新書でMFCについて解説してある参考書は まだ販売されているのでしょうか? >MFCの参考書は、VC++6.0で終わっているのでしょうか? 国内だと2004年ぐらいが最後の本でしょうか。 「マニュアルが教えないMFC―Visual Studio.NET対応」ってがギリギリVisualStudio2003はサポートしています。Amazon等では購入可能です。 >私のまわりの本屋さんではあまり見かけていないので、 >MFCは消えていく運命なのかな、と思ってしまいます。 MFCはVisualStudio2010でもサポートされる&拡張されるみたいなんで需要はあるようです。でも、米国でもC#が人気みたいですしね。 将来的には危ないですが、マイクロソフト純正でC++ネイティブで組む場合WindowsAPI直かMFCしか選択肢が無いので、マイクロソフトも止めれないんじゃないでしょうかね。 MFC止めたら、オープンソースのGUIツールキットのQtとかに流れて行きそうなんで、それもマイクロソフトは困るでしょう。 http://ja.wikipedia.org/wiki/Qt VC++である必要性も無くなるわけですし。
補足
ご回答、ありがとうございます。 MFCはまだ消えそうもないのですね。 Qtの存在を初めて知りました。 WindowsでもLinux、Macでも動くなんてすごいですね。 (オープンソース版があるってことは、無料で使えるのですよね!) 話が脱線していますが、Qtってもういろんなソフトで使われているでしょうか? そして、(4)の質問と重複する部分がありますが、 プログラマ初心者に薦めるとしたら、 MFC、C++/CLI(CLR)、C#のどれがいいと思いますか。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
>>C++を使いたい人がいるから。 > C#はC++は使えないのでしょうか。 別物です。 >> (2)MFCはこれからも使われるのでしょうか。 >>使われるでしょうが、少なくはなっていくでしょうね。 >何故そう思われるのでしょうか。 WindosForms/WPFの方が楽ですから。 >># MFCは言語じゃないので比較しちゃダメ > MFCの正体がAPIだからと意味で比較してはいけないという事でしょうか。 言語とライブラリを比較する意味がありません。
補足
ご回答、ありがとうございます。 わかりました。 #1の内容ですが、 >> (4)個人差はあると思いますが、開発スピードが一番早いのは、 >> CLR、C#、MFCのどれでしょうか。 >case by case. 僕は混ぜて使います。 混ぜて使えることができることもできるなんて、初めて知りました。 ご教授、ありがとうございました。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
※ 私見です。鵜呑みにしないで。 > (1)CLIとC#を区別した理由は何なのでしょうか。 C++を使いたい人がいるから。 > (2)MFCはこれからも使われるのでしょうか。 使われるでしょうが、少なくはなっていくでしょうね。 > (3)VC++2005以降、MFCは有償らしいのですが、 昔から有償です。express(MFCなし)が出たのが2005以降なだけ。 > (4)個人差はあると思いますが、開発スピードが一番早いのは、 > CLR、C#、MFCのどれでしょうか。 case by case. 僕は混ぜて使います。 # MFCは言語じゃないので比較しちゃダメ
補足
早速のご回答、ありがとうございます。 #1さんのご回答に、少し疑問に思ったので もし宜しければ、再度ご回答戴けませんでしょうか。 >> (1)CLIとC#を区別した理由は何なのでしょうか。 >C++を使いたい人がいるから。 C#はC++は使えないのでしょうか。 >> (2)MFCはこれからも使われるのでしょうか。 >使われるでしょうが、少なくはなっていくでしょうね。 何故そう思われるのでしょうか。 ># MFCは言語じゃないので比較しちゃダメ MFCの正体がAPIだからと意味で比較してはいけないという事でしょうか。 質問ばかりですみません。
補足
ご回答、ありがとうございます。 >CLIはC++的だが、C#はJava系の文法。近いけど遠い。 個人的には、CLIもC#もほとんど一緒と思っていました。 (C#は未経験ですが、CLIをやっているので、 C#は簡単に習得できるかな、と思っていました。) C++系か、Java系か、という違いなのですね。知りませんでした。 >net系のソフトですよってばれますし。 .net系のソフトがバレてまずいこと、って何かあるのでしょうか。 >.NET系はガベージコレクションがうれしいですが。 そうですね。VC++6.0(MFC)の場合ですと、いつもメモリリークを 心配しながら組んでいます。 (VC++2005以降のMFはGC(ガベージコレクション)は 付いているのでしょうか?) だから、GCがあるから安心してコーディング できます。 余談になるのですが、新書でMFCについて解説してある参考書は まだ販売されているのでしょうか? (MFCの参考書は、VC++6.0で終わっているのでしょうか?) 私のまわりの本屋さんではあまり見かけていないので、 MFCは消えていく運命なのかな、と思ってしまいます。