なんの前触れも無く復帰する日記

Boost本を読んでいて「そうか、Boostの発展にはExpression Template技法の開発が不可欠だったんだな」と納得したのですが、この"Expression Template技法"を説明した「日本語の」サイトが無い。

と思ったら非常に分かりやすい説明をしてくれているサイトがありましたのでご紹介(全3回)
http://d.hatena.ne.jp/Cryolite/20040506
http://d.hatena.ne.jp/Cryolite/20040507
http://d.hatena.ne.jp/Cryolite/20040510

 「なるほど。遅延計算は分かった。でもそんな演算やらないよ」と思った人ちょっと待った。それだけでは無いのです。

 今となっては設計自体が古いC++では、どんなに頑張っても「式を引数として代入する事」が出来ません*1。そこで関数オブジェクト(ファンクタと呼ばれます)を作って、それを渡す事になります。無名関数も作る事が出来ないC++では、一回しか使わないようなファンクタを作る場合にもなにかしらの名前をつけなければならず、これは名前空間を汚染します。簡単に言うと非常にダサいのです。

 ETを使うと、見た目上はC++では出来ない筈の、この「式を引数として代入する事」が可能になるのです。実際には式を代入するのではなく、式を関数オブジェクトにまるごと置き換えて代入しているので、やっている事は変わらないのですが「可読性」というのは、開発効率の点から見ても、現代プログラミングでは決して無視してはならないファクタなのです。

 ……で、可能になったからと言って、わざわざC++でやることか? って突っ込み大歓迎。JavaPS2のゲームが作れるんだったらC++なんてとっくに見限ってるのに……(PCのゲームも満足に作れてないくせになにをぬかしてるんだ俺は)。

*1:STLアルゴリズムを使う際にこれがやりたくなります