標準化進む新スクリプト言語“Groovy”[atmarkit.co.jp]

@ITにも登場。徐々に浸食が進むか。


最近Boost本を読んでいるのだけど、構文をLL風にしようという見せ玉を餌に、極度にメタな視点を強要する実装形態をぶつけるという戦術に、どうにもノックアウト寸前。C++を使いやすい言語にしようというより、「オレはC++でここまでやってのけたぜいえっふー」な印象がどうしても否めない。そうとも限らない、ちゃんと役に立つ機能が増えているとは分かっていても。
C++ってのは、

  • オリジナルABIによる、他言語との相性の悪さ
  • static厨、Meta Programming厨による極端に深化した構文

という、上下双方の事情によって、非常に閉鎖的な空間を形成している。この二つはワンセットで、COMやCORBA(?)で前者を解決できても、後者には対応できない仕掛けになっている。今までは、Cの遺産をタネに、この空間への参加を強制していたわけだが、最近は他言語やLLの潮流に押され、幾らか低調だ。Boostのほとんども、LL的要素を取り込むために使われている(スマートポインタやLambdaや正規表現や……)。
ただ、今のところ他言語ではどうしようもない技術が一つだけある。Spiritだけは、C++でしか有り得ない機能だ。C++で文法を書くとコンパイラがパーサを生成するという、MP厨きわまれりと言った実装だ。しかも悔しいことに、文法記述が実に分かりやすい。良くできている。
そこでこういうことを考える。
ABIを超えられないのは、TemplateバリバリのC++内部のオブジェクトに、.hをI/Fとして触ろうとするからだ。逆にすれば良いのではないだろうか。つまりC++はnativeデータ取り込み用の言語であって、yacc代わりとして使われ、パーサの出力はメインの別の言語で処理する。C++側が、逆に他言語のI/Fを解釈し、適切にコールする。ひょっとするとそれにもSpiritが使えるかも知れない。


ダメですか(´・ω・`)