@IT/Insider.NETで「いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005」を読んで衝撃が走った。
VS2005から実装されてくるC++/CLIはC++の.NET対応版ではなく、まさにC++そのものの言語拡張であると言える。
以下のサンプルがもっとも端的に物語ってる。
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#using <mscorlib.dll>
using namespace System;
int _tmain()
{
DWORD dummy;
// C標準ライブラリ
printf("Hello World!\n");
// Win32 API
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), "Hello World!\n",13,&dummy,NULL);
// .NET Frameworkクラス・ライブラリ
Console::WriteLine(S"Hello World!");
return 0;
}
しかも出力されたILコードはネイティブコードを下手にマネージコードへ変換するのではなく、ネイティブコードのまま出力されているところが更に唸る!
ってことはだ、前職のCG会社で開発したアプリのコードをそのまま流用して、更に.NET Frameworkの各クラスを利用できるということか、おまけにSSEをブッ叩くインラインアセンブラのコードやOpenGL、STLもまんま使えるのであれば、これは革命と言えるかもしれない(既存コードを簡単にコンバートできるかが争点にはなるだろうけど)。
いやぁ〜ぶったまげたはっきり言ってVS2005で一番進化したのってC#、VB.NETじゃなくてC++だったのか・・やばいなぁ実はβ時代に作ったC#版OpenGLライブラリを地味に公開してるんやけど、もうこんなのなくてもネイティブでOpenGL APIが呼び出せるの?P/Invokeなしで?
もし当時C++/CLIがあったら感涙してただろうなぁ・・