meryngii.neta

今日も新たな"ネタ"を求めて。

C++/CLI

C++/CLIの用途は、既存の資源活用だけではない。
.NET脳だとWindowsしか使ったことがないので、APIのラッパくらいしか思いつかないのだろう。

C++の強みはどこでも動かせることで、それはC言語から受け継いだもの。
そして、汎用なアルゴリズムを書くのなら、強力なテンプレートを持つC++は優秀だ。例えばバイナリを読むなんてときは、むしろC#より楽だったりする。

ただ、C++ではGUIが使えない。いや、使いにくいと言った方がいいだろうか。標準GUIは標準化委員会の手に負えるものではないようだ。かといって MFCなんて論外だし、Boost::GUIも実現しなかった。wxWidgetsは設計が古臭いし、ATL/WTLはドキュメントがひどく少ない。
そんな中で、C++/CLIから.NETのライブラリを使えば、テスト用のGUIをサクッとRADで作って、裏ではテンプレートをバリバリ使うなんてことができる。日本語のドキュメントも膨大だ。.NETのライブラリについての知識も深まるから、C++の知識でC#もすぐに使えるようになる。

現段階でC++/CLIは、文法がいやらしかったり、混合型が使えなかったり、Monoで動かなかったりと、いくつか問題はある。C++0xとの関係も複雑だ。
でもそれらは些細なことだ。C++で書いておけば、Microsoftの方針に関係なく、いつでもどこでも再利用できるということが重要なのだ。