で D BOF で話してきました。あとでまとめてあがるみたいだけどとりあえずどうでもいいスライドはこんな感じ。
http://www.slideshare.net/shinh/dreflection
http://docs.google.com/Presentation?id=dhf5wwff_79g93d9xcc
まぁなんか色々グダグダだったのはホントすいませんという感じだったけど、まぁ内容は面白かった。 Skype の下調査とか結局あんま意味なくてアレだった。にんとも。
とりあえず動画撮影して頂いた cojiさんにとても感謝でした。
その後で上述の通り Haskell Hackathon があったわけですが、ゲーム作るしか脳が無いと思われがちな D は言語作るのにも割にいいなーと思いました。
- 参加するからには勝たなければならない。
- どう考えても実装力で勝てるわけないので誰も勝負しなさそうな速度とかで勝てばいい。 → C++, D, OCaml
- 木いじるのは GC 欲しい。クロージャも欲しい。 → D, OCaml
- 実は OCaml とか最初から一考だにしていなくて脳内に C++ と D しかなかった。 → D
というような思考でもなんでもない理由だったのですが、まぁ割と良かったと思いました。インタプリタよりはトランスレータの方が速いし、リッチな言語にトランスレートすればむしろインタプリタより楽なんじゃないかなーと思ってトランスレータにしておいた。これもまぁ良かったんじゃないかな。 Haskell の実行時に template やらクロージャやら欲しかったし。クロージャは例えば let 作る時に
(funcdef gen_hello (v) (let x (++ "Hello, " v) x))
を
string _gen_hello(string v) { return ((string x){ return x; })(string_add("Hello, ", v)); }
というようにコンパイルしたりしてラクができた。あと mixin でなんかマングルとかやりたかったんだけどうまいこといかんかったから TODO として放置されてるので今度やろうと思う。
言語作る人に魅力的な点は
- コンパイラ作るのに十分な表現力。 (GC、OOP、ハッシュ、printf) (パターンマッチないのはアレかもね)
- ランタイム作る表現力も十分にある。 (GC、クロージャ、template、mixin)
- 適当に作ってもできたものはそれなりに速い。
- C 脳でも大丈夫。
- 言語仕様がガンガン変わるので言語作るくらいの言語オタにはぴったり。
とかがあるかと思った。書いてて OCaml でも良かったんじゃないのと少し思ってきたので最後の方に無理な根拠を足した。まぁ OCaml はライブラリがダサいとか文法がまどろっこしいとか(完全に主観)。
あと最近の C# とかそいう VM 回りの言語(知らんけど Nemerle とか Scala とか?)も上記の要求をそれなりに満たしてたりするんだろうな。
たぶん k.inaba さんとかが、 D にはアレがあるじゃないか的なことを教えてくれる気がする。