07/01/31 00:23
C++/CLI

今度仕事でC++/CLIを使うことになりました。開発環境にVisual C++ 2005を使用しますが、本格的にVisual StudioでCを使用するのは、Ver.6以来久しぶりになります。しばらく見ない間にC++ってすごく変化したのですね。ちょっと驚いています。. NETフレームワークに対応するため、大幅な言語拡張が施されていました。
.NETの開発環境ではC#が有名ですが、今ひとつとっつきにくいと思っていました。Java,C++のいいとこどりをした言語と言われていますが、. NET上でしか動作しないことや、まだ歴史のない言語ということで、仕様変更でふりまわされる可能性があることが抵抗となってました。最近Windows の開発に関しては、ちょっと簡単なプログラムを組むのならVBでいいですし、オフィスがらみのアプリならVBAでかなりのことができるようになってきていたり、正直言って、これからはどんな言語がいいのか、決めかねてました。今回の仕事がいい機会となっていろいろと調査してみると、このC++/CLIでの開発はかなり使えると感じました。
一番の魅力は、標準Cの関数、Win32API、そして.NETとすべてのライブラリが同時に使用できる点です。これで過去のノウハウがそのままつかえ、なおかつC#ライクなコーディングもできるということで、今のWin32から.NETの移行期には最適なのではないでしょうか。printf()と Console::write()が一緒に記述できるって、これかなりアグレッシブだと思いますが。。このあたり多少汚くても(?)互換性を重要視するのは、正に互換性の維持でシェアを伸ばしてきたWindowsの歴史、マイクロソフトのパワーを垣間見ることができます。二番目は.NETのガベージコレクションをC++でも使える点でしょうか。(C++の従来のコーディングに影響を与えない、上位互換の形で実現) こういった仕様により、コーディングルールはより複雑になりますが(一つ前のマネージC++よりはすっきりした)、Windows上でオールマイティな開発ができるという点と、久しぶりに好奇心をかきたててくれる技術という点で、相殺といったところです。
あとC#を選びたくない理由としては、マイクロソフト独自色の強すぎる便利なC#に慣れてしまうと、Cに戻りにくくなる恐れがあるからです。他のプラットホームでもCはよく使われている言語ですので、開発者としては軸足はここに置くのが懸命に感じます。(もちろんC#しかできないことは積極的に活用すべきですが。。)
新しい言語が次々と出現する中、このC++/CLIを知るまでは、C++は最近中途半端な存在になってきたなぁと思うこともありましたが、今回見直すこととなりました。WindowsのみならずMac,Linuxでもいまだ重要な言語ということを考えると、まだまだ使えることを再認識させられます。(ロジックの移植などでもCをよく使います) 歴史的にこれだけ長い間重要な位置をしめる言語って少ないのではないでしょうか。