仕事のすすめ方と研究

最近,仕事をしていて,仕事をどう処理していくかと,プログラムの評価手法と関連がある気がしてきた.
そう思い始めたきっかけは,僕自身は「遅延評価」というプログラムの評価手法を使った処理系の効率化を扱っているけれども,仕事を遅延評価で進めるのが苦手(きらい,落ち着かない)というところから.

よく,「苦手なものを研究のテーマとして選んでしまう」ってことを聞くが,本当にそのとおりになってしまっている.
他の人はどうなんでしょう?


遅延評価は,「あるプログラムの値を求めるとき値が必要になるまで評価を "遅延" するような手法」といえる.対になるのは,先行評価(正格評価)といって,「必要になるかどうかにかかわらず,"先行" して値を計算する("正格" に評価する)方法」.
# "正格" というのは誤字じゃないです.



この説明だけを見ると,無駄な計算をしなくてよさそうなので,遅延評価で考えたほうが効率がよく思えます.
そのため,みんなプログラムはそう評価していてもいいように思うかもしれませんが,実はそうなってはいません.
なぜかというと,

  1.   書いたところで計算が起こるというほうが,プログラムを書くとき,一般に直感的であるという説.
  2.   あるプログラムを遅延させて,後でちゃんとした値を求めるためには,色々と他の値を取っておいたりする必要があって,実装が複雑で,効率のよい実装が困難になる点.

などにより,広く使われているプログラミング言語ではあまり採用されていません.(といったら起こられてしまうかな)

研究でやっているのは,2 番目の項目に関するもので,どうやったら無駄なく値を遅延させることができるかってことです.

# と書いてきて,どうせこのブログを読むのは,主に知り合いなので,こんな説明も書く必要なかったなぁ.


まあ,自分の研究とかについては,今度書くことにして,とりあえず,自分の仕事の仕方と遅延評価について考えている.
上にも書いたように,遅延評価で仕事をやるのがきらいなので,先行評価で僕は仕事を進めたい.
# 実際,学生時代の夏休みの宿題についても,夏休みに入る前にある程度やっておくというテクを使っていました.

しかし,実は,仕事を進めるときには,先行評価の利点というのは,ほとんどない気がしてきた.
遅延評価で仕事をさばいていれば,

  1. 実はやらなくてよかった仕事の労力が省ける.他の人がやってくれるかもしれないし,ヒントをみつけてくれるかもしれない.その仕事がなくなる場合もある.
  2.  処理していない仕事があるので,次の仕事が入りにくくなる.
といった利点があるようだ.
プログラムに当てはめたとき問題になっていたことは,あまり考えなくてよいのかもしれない.
それは,多分,仕事の粒度というか,やってしまったときに無駄になった感が高いため,先行評価が損をした気になってしまうためだろう.
結局,無駄にならなそうな仕事からやっていけば,先行評価でもいいのだろうか.
僕の場合には,簡単に終わる仕事からやってしまうので,それがよくないような気もする.
# これについては,全体の満足度を上げられるという考えに基づいているのだが...
これは,スケジューリング問題も関わってくるので,今後の研究の課題にしたい.


と分かっていても先行評価をやめないというのは,結局,気分の問題だという結論に至った.
結局,何かしら仕事があると,なんとなく落ち着かないということが,無駄な仕事をしてしまった感より強いということ.
夏休みの宿題があると夏休みを楽しめないということだろうか.
# 楽しめる人には,遅延評価がおすすめです.


何か,他におすすめの評価戦略があったら教えてください.
今後の研究テーマ? にします.

# といっても,僕自身は先行評価以外の戦略はとれないんだろうな.
# 「なぜなら(正格)性格の問題だから.」というダジャレを思いついたので,終了.

コメント