DSLの次

ここ最近、(自分だけかもしれないが)、当分の流行りはやっぱりDSLになるんじゃないかな。と思う。

Ruby/PythonJavaScriptへの注目があり、その中で古くて新しいLispが見直されて本が出たりでクロージャ、無名関数は常識になってきた。C#/C++0xへの導入もあって”ラムダ”という用語はもはや普通。

boostは凄まじいメタプログラミング、テンプレート、マクロの併用でC++でできることの限界を押し上げ、BOOST_FOREACH、BOOST_SCOPE_EXITで擬似的な言語拡張が結構できちゃっている。

Rubyではclass_eval/instance_evalによってライブラリはデフォルトでDSL状態。

各言語と仮想マシン/プラットフォームのマッピングは自由自在。LinuxC#→Mono, C++Flash/Flex→ Alchemy、ブラウザの中で高速演算→C++Google Native Client. RubyはNative/.Net/Java/...どこでも動くし、欲しい組み合わせが無いとしても待てば出てくる状態。

ANTLRのようなパーサもあるし、ScalaのParser Combinatorもあるし、言語ワークベンチも2010年中にはこなれたモノが出てくる予感。

ここ2,3年で注目された言語の数は極めて多いし、自分のようなふらふらした人間には、ほとんど何かに留まる暇さえなかった。

メタプログラミング高階関数、eval、implicit convertion(scala)、オープンクラス、Extention Method、動的言語型推論、、、結局、これらはDSLの実現手段というくくりでいいような気がする(もちろん、全然それだけではないけど)

Marin FowlerはDSL本のWebサイトでのドラフトの更新をStopし、出版に向けて動き出している。
http://martinfowler.com/dslwip/index.html
大御所が本を出せば、ますます注目される。ので少なくとも一つの体系としてはDSL(または、Domain Driven Design)としてひとくくりでいいんだろう。

んじゃぁ、その次は何が来るんだろうか?
・・・浮かばない。やっぱり作りながら考えなきゃだめだろうな。