DSLの次
ここ最近、(自分だけかもしれないが)、当分の流行りはやっぱりDSLになるんじゃないかな。と思う。
Ruby/Python、JavaScriptへの注目があり、その中で古くて新しいLispが見直されて本が出たりでクロージャ、無名関数は常識になってきた。C#/C++0xへの導入もあって”ラムダ”という用語はもはや普通。
boostは凄まじいメタプログラミング、テンプレート、マクロの併用でC++でできることの限界を押し上げ、BOOST_FOREACH、BOOST_SCOPE_EXITで擬似的な言語拡張が結構できちゃっている。
Rubyではclass_eval/instance_evalによってライブラリはデフォルトでDSL状態。
各言語と仮想マシン/プラットフォームのマッピングは自由自在。LinuxでC#→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)としてひとくくりでいいんだろう。
んじゃぁ、その次は何が来るんだろうか?
・・・浮かばない。やっぱり作りながら考えなきゃだめだろうな。