趣味でのんきにMFCの勉強をしていたら、MSDNのどこかに、今後MSはMFCをサポートしない、みたいなことが書いてあって、びっくりしました。
CLRの存在だけは知っていましたが、あまりピンときていませんでした。
ところが、さらに最近、どこかの掲示板で、MFCは形を変えて今後も存続する、みたいな書き込みを読みました。
確かに、C++がJAVAやC#に「押されている」というのは、感じます。
周囲の人に聞くと、「CLR派」と「C++派」にはっきり分かれていて、「CLR派」に聞くと、「C++はもう終わりだ」みたいなことを言いますし、「C++派」に「C++は下火だ」などというと、眼を三角にして怒り出したりします。
結論的には、あと10年くらい経たないと結論が出ないのかもしれませんが、現時点で、どんな見通しなのでしょうか。
MFCが「形を変えて」とは、どんな意味なのでしょうか。
実は2008を買おうかと思っているのですが、MSのサイトを見ると、「VB」と「C#」を強化した、みたいなことが書いてあります。
まさか、MFC自体が使えなくなっているとは思いませんが、MFCはインターフェースを含め、2005と殆ど変らないのでしょうか。
また、CLRは、大きく変わっているのでしょうか。
また、今から勉強をCLRを主に切り替えてしまうのは、軽率でしょうか。
> MSDNのどこかに、今後MSはMFCをサポートしない、みたいなことが書いてあって、びっくりしました。
もし本当なら一大事です。是非ともどこで見たか思い出してください。
VBやC#は確かに勢いに乗っています。
WPFやLINQといった機能は、C++からは使えません。
C++で.NET Frameworkを使うC++/CLIというやつは、MFCと併用することもできますが、正直、使いどころが微妙な言語です。
ユーザーインターフェイスを作るのはVBやC#の方が得意なので、UIはそっちに任せて、そこから既存のC++ライブラリを呼ぶ繋ぎとして使う、という用途を推奨されている方もいます。
VS2005から2008では、MFCはそんなに大きく変わってはいません。
しかし、2008にアドインとして提供される VC++ Feature Packというやつがあり、これで大幅にライブラリが追加されます。
まだβ版なので、VS2008日本語版での動作はサポートしていませんが、今後が楽しみです。
http://www.microsoft.com/downloads/details.aspx?FamilyId=D466226B-8DAB-445F-A7B4-448B326C48E7&displaylang=en
また、.NET Frameworkでは、Windowsの機能を完全にカバーしていません。
昔は.NETの登場でCOMは廃れる、Win32 APIは無くなると言われていましたが、今も新しいOSが出るたびに、COMインターフェイスもWin32 APIも追加され続けています。
APIはともかく、COMを.NET Frameworkから使うのは一苦労だったりします。
MFCにはドキュメント・ビュー・アーキテクチャというのがあるのも特長です。
VBやC#には、これに相当するものが無いからです。
C++言語自体にも、来年中のとりまとめを目指している、C++0xという次世代言語案があります。
これがVC++で使えるようになるのは、まだ3〜4年先になりそうですが、言語自体も進化しています。
総じて、C++やMFCはもう終わりだ、先は無いと思ってしまうにはまだ早いといえるでしょう。
とは言うものの、Microsoftは今後も主力として.NETをプッシュしてくることは間違いありません。
MFCだけ知っていれば大丈夫、VBやC#は知らなくてもやっていけるという姿勢は、自身の首を絞めかねません。
シャノンさん、ありがとうございます。
>> MSDNのどこかに、今後MSはMFCをサポートしない、みたいなことが書いてあって、びっくりしました。
> もし本当なら一大事です。是非ともどこで見たか思い出してください。
どなたかのサイトから、リンクで飛んでいったと思うのです。
「お気に入り」に入れておけばよかったのですが、「後悔、先にたたず」です。
でも、けっこう気合いの入ったことが書いてあったと思います。
初心者で、シャノンさんがおっしゃることが十分に理解できてはいないのですが、とりあえず参考書がある程度揃うまで、2008を買うのは待とうと思います。
あと、少しCLRを勉強してみたのですが、分らないことがあってネット検索すると、VBやC#のページがヒットします。
試しに、検索項目の中から「CLI」を外してくぐると、VBのサイトの大半が、.NET Frameworkのコードになっているような気がします。
VBとCLIが別もの、というのは理解していますが、今ではVBはほとんど.NET Frameworkになってしまっているのでしょうか。
それとも、「たまたま」でしょうか。
ちょっと話が外れるかもしれないですが、個人的にはC/C++を使うのは本当のプロや上級者だけにしてもらって、それ以外の人間にはVBやC#を使って欲しいです。じゃないといつまでたってもポインタやメモリリークに関するバグや不毛なQ&Aが無くならないので…
C#の仕様を見るかぎり、MSもそう思っているんじゃないですかね?
そういう意味で、C/C++やMFCを別製品にしてVSとは切り離す…というのは個人的には歓迎ですね。学校でCを初心者に教えるのもやめて欲しいし。
用語は正確に使いましょう。
C++/CLIとCLIは別です。C++/CLIの略としてCLIを使わないでください。
> 試しに、検索項目の中から「CLI」を外してくぐると、VBのサイトの大半が、.NET Frameworkのコードになっているような気がします。
> VBとCLIが別もの、というのは理解していますが、今ではVBはほとんど.NET Frameworkになってしまっているのでしょうか。
.NETでないVBというと、最後のバージョンはVB6で、これが出たのはもう10年も前の話です。
VB.NETの最初のバージョンが登場してから6年経っていますし、VB6の情報もかなり減ってきたでしょうね。
とはいえ、まだ需要があるところにはあるものです。
> じゃないといつまでたってもポインタやメモリリークに関するバグや不毛なQ&Aが無くならないので…
C#やVB.NETを使ったからといって、ポインタやメモリリークに無縁ではいられませんよ。
> C++/CLIとCLIは別です。
気をつけます。
シャノンさん、いろいろと、ありがとうございました。
たいへん参考になりました。
解決チェックを忘れました。
> じゃないといつまでたってもポインタやメモリリークに関するバグや不毛なQ&Aが無くならないので…
2008(のFeature Pack)からはshared_ptrが入るのでリソース管理はラクになるはずです。使えばね。
> 2008(のFeature Pack)からはshared_ptrが入るのでリソース管理はラクになるはずです。使えばね。
# それはそれで、weak_ptrとの使い分けが出来なくて「ハマル」ことも。
> それはそれで、weak_ptrとの使い分けが出来なくて「ハマル」ことも。
当然ながら、使うなら使いどころは考えないといけませんね
shared_ptr便利だよって話になるたびに「循環参照あるじゃん!」ていう
話になるのもそろそろ飽きましたが、解決する手段(weak_ptr)が用意されているなら
循環参照というものが起こりえることさえ知っていれば便利に使えるからいいんじゃないかと
# 本スレの内容から離れてきたのでこれ以上は書きませんが
結局上手く使える奴にはそもそも必要なくて、逆に本当に必要な奴は上手く使えない…という悪循環でしょうね。この手の話の常として。
ツイート | ![]() |