2008/01/11
テスト
ひがやすを blogより:
実は、テストを書くのは結構工数かかるんですよ。スクリプト言語は、 コンパイラがミスを教えてくれることはないので、Javaと比べると、 より多くのテストを書く必要があります。でも、そんな話ほとんど聞いたことないですよね。
気持ち的には平均して実装:テストは1:1くらいだと思っている。 平均だから、場合によってはテストの方が工数がかかることももちろんある。 あとドキュメントが気持ち的に0.5くらい。 だから、実装がひととおり済んだというのは 道程にして40%にすぎない。もっともやっと動いたところでまだ4合目というのでは 士気が保てないので、ドキュメントもテストも平行してやるようにしてるけど。
なぜ実装の方が楽なことがあるかというと、実装ってよく考えないでも とりあえず動くものは出来ちゃうことがあるんだよね。でもテストは ちゃんと隅から隅まで考えないと作れない。
特に、何年も潜んでいてある特殊な条件が重なった場合にようやく露見するような バグは、滅多に通らないパスの、それもそのパスを通るかどうかの境界条件まわり に居ることが多いと思う。そんな面倒なところをちゃんと詰めて考えないでも、 ほとんどの場合に動くものは作れる。もう少し真面目にコードパスのカバレッジを 100%にしようと思うなら、多少試行錯誤すれば滅多に通らないパスを 通るようなテストデータを用意することもできる。
でも、そのパスに入るか入らないかのクリティカルな判断がされるところを テストしようとしたら、どういう条件でパスのスイッチが起きるのかを定量的に 把握してないとならない。
型の整合性がちゃんとチェックされる言語、MLやHaskellなどで時々 「コンパイルが通ればほとんどバグはない」みたいに言われることがあるけど、 これらの言語の型システムも上で言ったような境界条件回りの整合性を検出できる ほどには強力ではないはずだ(ちゃんとやろうと思ったら依存型が要るのでは)。 「コンパイルが通れば〜」と言えるのは、 こういう言語で書いている人は実装段階から「ちゃんと考える」ことを ある程度システムに強要されるためではないか、という気がする。
(ところでテストファーストというのは基本的には良いことだと思うのだけれど、 上記のとおりちゃんとしたテストというのは実装で使った具体的なアルゴリズムや パラメータにべたべたに依存するので、特に性能評価などでいくつものアルゴリズムや パラメータを試した場合などは採用したものを基にして改めて境界条件を つっつくテストを書く必要があると思う。みたいなことはちゃんとしたTDDのドキュメントには 書いてあったりするのかしらん。)
Tag: Programming
2008/01/10
Pythonでモナド
Monads in Python (with nice syntax!):
デコレータとジェネレータを使ってる。 WiLiKi:Scheme:ExplicitMonadで考えたように、 動的型言語でモナドを書く場合の困難はreturnを多相にするところ (具体的にどのreturnを使えば良いかが、引数でなく呼び出し側が期待している 返り値の型に依存すること)だ。 このアイディアではモナドのreturnで例外を投げて、 デコレータ中で例外を捕捉してその時点でアクティブなモナドの unitメソッドを起動するというふうにしている。 実行時に有効なモナドをトラックするという原理はWiLiKi:Scheme:ExplicitMonadと同じだ。
しかしモナド演算に入る度にtryブロックを作って、returnの度に例外を 投げるんで性能は大丈夫なんだろうか。Pythonだと例外処理と捕捉は 軽いのかなあ。
Tags: Programming, Python, Scheme
2008/01/09
駒小
東大で学んだ卒業論文の書き方という 文章を読んでいた。いろいろな分野から引いてきた余談がまた楽しいのだが、 突然懐かしい話が登場した。
今思い出したが、東大には駒場小劇場というハコがあった。この劇場は駒場寮の中にあり、東大最強と言われた寮委員会が支配していた。外部からの統制は不可能であった。
寮委員会は、寮の美観や耐久性をすでに見切っていて、壊れる前に使い倒そうという方針があったように見えた。舞台に水を張って芝居をするなど、普通の劇場では絶対に無理なことが出来たらしい。
駒場にはアゴラ劇場があるし、下北沢や渋谷へは歩いていけるが、こういうハコは外には無い。
水を張ったのはTaBreという劇団だ。 この伝説の舞台は私が入る前(2〜3年前だったかな?)なので観てはいないが、 私が観た中でももっと他の劇場では絶対に出来ないだろうということをやってた。 ちょっと縁があって手伝ったり出させてもらったりしたことがある。
駒場小劇場が無くなって、今は学内の劇団は駒場小空間という小屋で公演を 打っているようだけれど、小劇場のころほど無茶はできないらしい。 もっとも、今も小劇場があったとして、同じような無茶を現役生に勧めたい かというと微妙な気もする。無茶というのは「止むに止まれずやってしまう」もので あって、その効用は認めるけれど積極的に奨励するようなものでもない。 というより、無茶というのは上の世代が想定した範囲を越えてゆくから 無茶なのであって、「わしも若いころはよくやったもんだよ」と年寄りが 言うようなことをなぞっても仕方がないのだ。今の世代は今の世代の無茶を やってることだろう。それが何だかは知らないけれど。
Tag: 芝居
2008/01/07
すっきり
1年以上前に実験してそれなりの結果が出ていたネタを、色々な忙しさに かまけてちゃんとまとめる機会を逸していた。というか2度ばかり投稿 しようとして途中で挫折してたんだけど。 3月にPPL2008に呼ばれたので、 せっかく行くのなら論文発表もトライしてみようってことで改めてコードを改善し、 データを取り直して論文にしてみた。 まあ通るかどうかはわからないけど、一度完成させるってのはやっぱり気分が すっきりする。そう、ちょうと便秘に悩んだ後で宿便が出るとこんな感じなんでは なかろうか。あまり便秘にならないので想像だけれど。アウトプットしないっていうのは 知的な便秘という感じがする。
なお招待講演の方は技術的な話じゃなくて、好きなマイナー言語を書いて 飯を喰ってゆくにはどうすればいいか、みたいなことを喋るつもり。 本人が明日をも知れぬ生活をしてるので、ソリューションを示すんじゃなくて むしろ教えてほしいくらいだけど、ここから面白いつながりができたら いいなと思ってる。
ところで昨年頭に今年こそはこのメモ書きをWiLiKiベースのblogにしようと 考えたわけだがたちまち1年経ってしまった。時々ネットで言及されることがあるけど permalinkが貼れないので不便をおかけしている。もうちょっと待ってくださいな。
Tags: Publication, Conference
2007/12/31
今年もあと9時間だというのに仕事のキューは伸びるばかりだ。
仕事上必要があって組んでいたAMD64x2のWindows機に、これまた仕事上必要に なってUbuntuを入れた。で、Windowsの開発環境も必要なのでVMWareを入れて その中にWindowsを再構築。メモ→Shiro:WinXPonVMWareonUbuntu?
-*-*-
blog.pmarca.com: The world is not so flat, God of Visas edition
Praying to the Visa God is actually quite a bit more rational than current US immigration policy.
インドにはヴィザの神様がいるそうな。H-1Bを取るために寺院を 訪れる人々がひきもきらないとか。
