Hatena::ブログ(Diary)

わさっき RSSフィード

2008年08月13日

柔道とプログラミング 〜 一本!

昨日の北京五輪,柔道女子63キロ級で谷本歩実選手が金メダルを取るまでの各試合を見て,あらためて,「一本は清々しい」と感じています.

さて,オリンピックが始まってから,柔道の一本に相当する,自分の仕事は何なのかを考えていました.

日ごろは研究のため,授業のため,自己研鑽のため,プログラム(コード)を書いていますし,授業や研究を通じて,学生に書かせ,目にする機会もあります.その一方で,この日記ではときどき柔道の話題を取り上げていますし,中学,高校と柔道をやっていました.

その前に確認を.柔道は「試合」の中で,一本,警告,有効,効果の判定がなされます.そこには「相手」がいるわけです.一方,プログラミングはというと,必ずしも人としての相手がいるとは限りませんが…プログラムを動かす計算機を,相手とみなすことにしましょう.計算機は,もちろん,自分が「参りました」とかいった感情を抱くことはありませんが,*1が見ても「一本!」と言いたくなるプログラムというのはあるはずです.

悩んだのは,「立ち技の一本」と「寝技の一本」の区別です.それぞれ,プログラミングでどうすればいいかですが….

思いついたのは,立ち技の一本は,短いけれども,アイデアの詰まったプログラムです.切れ味の鋭いコード,と言えるかもしれません.

寝技の一本は,安定していて,長持ちのするコードです.こちらの評価方法は簡単で,ある目的で書いたプログラムを,どれだけの期間,バグなく使用できるかを見ればいいのです.

逆に,プログラミングから柔道へ….

プログラムが意図どおりに動かない要因というと,「バグ」ですが,これを柔道で言うと,立ち技にせよ寝技にせよ,技がきちんと決まっていないことを意味します.

そこで連続技をかけて投げるとか,寝技なら絡まっている足を抜くとかいったことが,「デバッグ」に相当します.

横四方固めから上四方固め*2に体勢を変え,盤石の抑え込みにすることは,そうですね,「リファクタリング」でしょうか.

*1:ある程度以上の見る目を持った人間とします.将来的に,計算機がその役割を担う可能性があることは,柔道でもプログラミングでも,否定しません.

*2:一般に,片腕のみで相手の首をきめる横四方固めよりも,腹あるいは脇できめる上四方固め・崩れ上四方固めのほうが,より強く固めることができます.