謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

D言語

C++につまずいていたらD言語なるものを知った。
いや、以前一度見たことあったんだけどあまり気に止めていませんでした。
んで昨日、MozillaPythonに対応するのか…、どんな言語なんだろうと思って検索してたらpukiwikiHello Worldページが引っかかりC#JAVAっぽいスクリプト言語を探してたらネイティブコードを吐く(スクリプト言語じゃないじゃんw)D言語に興味を持ったという訳です。
何か凄く良い言語でversion文(OSの分岐)とかmoduleだとか文字列型(char(UTF-8),wchar(UTF-16))がコンパイラ内部で決められてたり(C++のcharと違いstd::stringっぽい感じ。null終端でなく文字長の保持(動的配列)なのでC言語との互換性は低いが高速動作するらしい。~演算子で文字が簡単に連結可能。sjisでも\が含まれる文字もr"表示"とかで可能。)とか配列が強力(int[char]とかint[int[]]とか)とか自動的にメモリを開放してくれたりとか。
スクリプトとしてのD言語とあるようにスクリプト言語としても使いたいなと思う。
D言語からC++のクラスライブラリを使う事もできる(C++側にはextern "C"が必要でD言語側にはextern(C){}内に関数の宣言が必要)のでXPCOMを簡単に使えそうだし作る事もできそう。(マクロのDLLEXPORTとしてextern "C"が全てに付いてたはず(うるおぼえ)。でもソース見てみたらextern "C"だと思ってたけど__declspec(dllexport)だったようで更にDLLEXPORTはNS_IMETHODIMPの勘違いだったいう…。C++のインターフェースはサポートしてないようですがWindowsのCOMの呼び出しはextern (Windows)で出来るで、Phobos側でなくコンパイラ側での対応になってそうです。SWIGを使えば出来なくもなさそうだけど…ってかC++でのXPCOMの実装ってテンプレートだったような気がするんですが(D言語自体はサポートしてるけどSWIGのブリッジで)テンプレートって使えるのかな…?)
C++で作った簡単なテストアプリを移植してみたけどリンクで失敗するorzので速度比較はできてませんが簡単なネイティブアプリにはかなり使えそう。