hirax.net::Keywords::「プログラミングスタイル」のブログ



2009-06-12[n年前へ]

Mathematicaで「オブジェクト指向風」記述 

 春過ぎの頃、「分光スペクトル・色処理用のMathematica 7.0用ライブラリ」を作りました。そのライブラリを使うと、たとえば、D65光源下で、赤紫色の絵具を重ね塗りしていく際の色変化を CIE Lab 空間のグラフで表示させると、

labPlot[ 
  Map[lab,Table[
           transmissionSpector[D65,
                   magentaFilter, d],
                   {d,0,10.0,0.1}]
     ]
]; 
というようなコードになります。labPlotという名前の関数が一番外側にいて、その内側にMap関数がいて、さらにその引数のひとつにTable関数がいて、その内側にtransmissionSpectorがいて・・・、という風に関数・括弧で外側から包まれているような具合の書き方になります。

 こういう書き方をしていると、括弧の対応がわからなくなったり、処理の流れがわからなくなったりしてしまうように感じることがあります。そんな時、気分転換がてら、Mathematicaのコードを「オブジェクト指向風」記述で書き直したりします。どういうことかというと、たとえば、こんな関数を定義してやります。

Light[new]:=Module[
  {Spector=D65,
   self},
  self[setSpector,spector_]:=(Spector=spector;self);
  self[spector]:=Spector;
  self]
 すると、
a=Light[new][setSpector, D65][spector][600]
というように記述をすることができます。これは、スペクトル属性を持つ「光オブジェクト」をつくり、そのスペクトルをD65光源と同じにし、そのスペクトルの600nm波長の強度をaに代入する、という内容です。最初の例のような、括弧で多重に囲われているのではなく、括弧が連続しているので、括弧の対応や処理手順がわかりやすくなっています。

 コードのミソは、「Module内で宣言した(一意に識別できる名前が付けられる)変数self」により、オブジェクトを表現している、というところです。また、selfを返す関数を作ることにより、Light[new][setSpector, D65][spector][600]という風に処理を連ねていくことができるわけです。

 もちろん、こういう「オブジェクト指向風」記述をわかりやすく感じる時もあれば、そうでない場合もあるわけで、状況によって、あるいは、その時の気分で好きな風に書く、のが趣味プログラミングとしては一番楽しいような気がします。

2009-06-21[n年前へ]

Mathematicaライブラリをさらに「オブジェクト指向風」にしてみました 

 以前、分光スペクトル・色処理用のMathematicaライブラリ(関数群)を作りました。そして、この前Mathematicaで「オブジェクト指向風」記述をすることで、括弧の対応や処理手順を見やすく・わかりやすくしてみました。もちろん、「わかりやすい」というのはあくまで主観的な話です。

 今日は、もう少し本格的な例を作ってみようと考えて、そのMathematicaライブラリに、Spectorクラス・Layerクラス・Lightクラスを作成・追加してみたのです。物体を光で照らした時に見える分光スペクトルを、モンテカルロ的に解く機能を適当に付けてみました。

 そんなわけで、スペクトルを扱うSpectorクラス、立体形状を扱うLayerクラス、そして、適当に光追跡を行う機能を盛り込んだLightクラスを仕立ててみたのです。

 たとえば、デフォルト設定をそのまま使うなら、

layers=Layer[new]
aLight=Light[new]
aLight[in,layer][showTrace]
といったコードを書くと、三次元物体中を照らす光の色が、どのように変わっていったかを立体的に表示させることができます。

 あるいは、

Spector[new][set,blueSpector][spectorPlot]
と書けば、青い色のスペクトル分布を描いてくれます。Layersは・・・形状を定義する関数を少しオブラートに包んだクラスです。

そんなわけで、数日後には、バグ確認・使い方の例などを加えた上で、サイトからダウンロードできるようにします。また、適当に仕立てたこのツールを使い、何か解析でもしてみようと思います。

Mathematicaライブラリをさらに「オブジェクト指向風」にしてみました






2009-12-07[n年前へ]

NEWS今昔物語「男と女」と「車」編 (初出2004年07月00日) 

5年前のNEWS(未来)を振り返ってみて思うこと

数年前の古いニュースも、意外に現在のニュースと同じように新鮮に感じたりすることもあるだろう、ということで、この過去の記事連載を、(昨日から)今現在の新しいNEWSと同じ枠のTech-logsに移動しました。

(記事を書いた時の)ひとこと

 先日、高速道路での車の運転に疲れてSAに入って休んでいると、おっぱいプリンなんていうのが目に付いた。「大量に余ってしまったプリンの在庫・・・・。何とかして売れないか?そんな試行錯誤から登場した」という。(売れなかったはずの)この製品は、何と「市場に出ると同時に大ヒットを遂げた」という。「男と女」のどちらがこのプリンを買い支えているのかはわからないが、在庫整理の方法を何だかとても面白く感じた。

 今回は、その高速道路での新鮮な驚きをキッカケにして、「男と女」と「車」にまつわる(5年前の)ニュースを選んでみました。

理想のカップはCカップ?

 大人のオモチャの販売会社Adam & Eve sex toysによる、「 男性では42%、女性では45%が理想のバストは「Cカップ」だと思っている」という調査報告が7/2に発表された。

 面白いのが、「大きいバストを好む人の比率は男性の方が女性よりも高く(男性18%, 女性9%)」、その割には「小胸さん = Aカップを好む人の割合も(この差はほとんど誤差だろうが)男性の方が女性よりも高い(男性3%, 女性2%)」というところだろうか。つまり、男性の好みは「巨乳」から「微乳」まで実に幅広い、ということである。

男と女では世界の眺め方が「文字通り」違う

 『男と女では世界の眺め方が「文字通り」違う証拠』と 題した発表が7/8のNewswiseに掲載された。この中で、女性は色認識に関係する遺伝子を2種類持つことができるが、「異なる遺伝子を二種持つことにより、赤やオレンジの辺りの色を詳しく知覚することができ、果実を集めたりする(ことが多かった)女性たちにとっては便利だったのかもしれない」という推測と共に、「男女は-文字通り-異なった風に世界を見ているかもしれない」という。

 男と女が見ている世界の違いは…知りたいような知りたくないような…。

「美人プログラミングスタイル」と「行き当たりばったり指向プログラミング」

 沖ソフトウェア株式会社のWEBページ内で、プログラムのソースを調べて「いちゃもん」をつけるという汎用メトリクスツール「いちゃもん」の作り方という記事が7/16から連載され始めた。このサイトには他にも、美人プログラミングスタイル行き当たりばったり指向プログラミングなんていう、面白いのにとても勉強になる一粒で二度美味しい記事がある。プログラミング作業に疲れた時には、こんな楽しげなプログラミング手法で枯れそうな心を癒してみるのも良いかもしれない。

 ちなみに、他の楽しげなプログラミング手法としては初等ロリータ指向(×嗜好)プログラミング(中級編)もお勧めだ。

スチュワーデスと女子アナの平均顔

 ネイチャーインタフェイスの最新号に東京大学の原島博教授による スチュワーデスと女子アナウンサーの平均顔 」の写真が掲載されている。その二枚の写真を眺めると、確かにいかにも「スチュワーデス」と「女子アナウンサー」に見えるから面白い。

アウディの車がエッシャーの世界を走る

 最近、アウディCMが評判になった。その動画をぼんやり眺めていると、一見自然に見えるかもしれない。しかし、よくよく眺めてみるとこの世界はヘンだ!そう、エッシャー(M.C. Escher)が描く不思議な空間をAudiの車が縦横無尽(縦も横も上下左右もよくわからないのだが)に走り回っているのだ。

 その撮影のトリックの一端は  6/8にCGNetworksに掲載されたレポートで知ることができる。それは、まさにイリュージョンだ。



■Powered by yagm.net