TOP
PROFILE
MUSIC TUNE
BBS
LINK

2005年08月30日

C++/CLIの衝撃!

@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があったら感涙してただろうなぁ・・

Posted by GAMMARAY at 2005年08月30日 18:28 | TrackBack
Comments
C++/CLI強力ですね。 ただ、諸刃の剣であることにかわりはなく、アンマネージドなコードはアンセーフな訳で、CLRが管理できない部分で失うものもそれなりにありますね。大人の道具ってことでしょうか。(あ、変な意味じゃなく(^_^;) Posted by: afukui at 2005年08月31日 12:36
ほんとごっついですよ〜これ。 GUI周りはマネージで描画エンジン部分をネイティブでカスタムすれば結構いけそうかなぁ。 暇があればSTLとかも試してみたいですねぇ〜後はどれほどパフォーマンスの最適化がされるのかってとこか。 いやほんと大人の道具っすね(^^; Posted by: GAMMARAY at 2005年08月31日 13:13
某社の某アプリのVC部分は知らないうちに.NET(VC7?)化されたらしいです。VB部分は、先の事を考えずにVBを導入したヤツに作り直させるか、全部捨てて作り直したいといった感じだったりします。というか、状況は何も変わっていない…と。 Posted by: 左の人でしたっけ? at 2005年09月02日 23:25
あの頃作りやすさを考えたらVBしかなかったワケで。 その後(VB.NETで仕様がガラリと変わった)の事を予想出来る人は少なかったと思います。 ホントにおっしゃる通りに「捨てるなら今(正直遅いくらいかもしれん)」と思います。 ただ、チームリーダー以上の現状の情報力だとその辺を理解するのは 正直難しいんじゃないかな?って気はします。 個人的なシステム開発論から言わせて貰うと中途半端に モジュールごとにアップグレードするよりは、いっそ切り捨てて 新たに設計からやりなおした方がいいかと思うんですよね #某アプリfor Wと機能の共有出来る部分もあると思うし Posted by: 情シスな人 at 2005年09月03日 02:06
> 左さん あれ〜そうなんだ〜IDEだけはVS.NETになったわけね。 > シスな人 当時はVBじゃなくてC++Builderを使うべきだったと俺は思うわ、メトロはBuilder使ってたし。 Posted by: GAMMARAY at 2005年09月03日 14:16
Post a comment









Remember personal info?