おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2005年03月09日(Wed) 遠方より友来たる [同日]

わーい。

CでDuck Typing

Duck Typingって一般的なプログラミング用語かと思ってたら、Ruby用語だったのですね。データの元の型に関係なくメッセージを送る(データに対してメソッドを呼ぶ)ことができる、という意味だろうと思います。

今、本職でやっている仕事のひとつは、装置のいろーんなステータスがいろーんなフォーマットで記録されているストリームから、欲しいステータスだけを取り出すソフトを作ることです。上のインターフェースはPythonかRubyで作るとして、ストリームとのやりとりはCのライブラリとして欲しい、という要求があります。もしかしてステータスへのポインタに対してto_sとかto_iとか呼べばいいんじゃないか?と思って実装を始めたのですが、これが大変でした。何しろどんな型のデータでも扱えなくちゃいけないので、Cではvoid*がでてきまくり。これをステータスの型に合わせてキャストして変換して、double*とかlong long*の領域にコピーするわけですけど、Bus errorとかSegmentation faultとか出まくりでございますよ。

なんとか形にはなってきたのですが、実際にどんな値であるべきかがよくわからないのでテストケースを書くのも一苦労だったりします。でも、まあ、CでもどうにかこうにかDuck Typingができるということで。(考えてみればRubyだってCで実装されてるのだからあたりまえといえばあたりまえだ。)

ところで、"walk like a duck" businessってどういうbusinessなんだろう…。

[memo] IBM dWより興味深い記事2題

あとでよむ〜いつ〜。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>