12月
09
2006

数学とゲームとプログラム作成

毎日ブログを書くことを自分で義務付けているが、最近アップが遅れること
が多い。ちょっとリズムが変わるとすぐに影響が出る、私の悪いところで
す。(すみません、読み直してみると支離滅裂です。頭が支離滅裂みたい)

今年はじめにあるプログラムをアップしようと思っていたのだが、直前に
なって不具合がみつかり、それを3回ぐらい繰り返している。
不具合が見つかるたびに、別のプログラムを書き換えたりしてもっといいも
のにしようという変更もしている。そんなこんなで、プログラムのサイズは
全部で1000行ぐらいとたいしたことはないが、まるごと全部を3回を書き換
えているような感じだ。

新しいものをつくるときは細かな設計はしない。
頭の中で漠然と思い描き、それを具体的なところに落としていく。
これまでになかったことをしようと思うと、参考になるプログラムはあまり
なくて、試行錯誤をしながらつくっていく。

私は学生のときの数学だけが唯一他の人にも負けない自身がある。だから、
すべてその数学の発想で、これまでの人生を生きていたような気がする。良
くも悪くもない。人はなにか自信を得るとそのやりかたで物事を考えている
のではないだろうか?
学生時代に国語が得意な人がいて、彼は理系に進んだのだが数学や物理など
は苦手で暗記を中心とした発想をしていたように思う。英語が得意な人も、
英単語やイディオムを覚えていたように思う。

数学、英語、国語はそれぞれ違った発想のもとにやらないといけないのだ
が、それを両立できる人はすごい人なんだろうと思う。

結局、私は40年近くその数学の問題を解くような発想で生きている。
物事は、すべて数学の問題、パズルを解いたり、その解法を考える。新しい
次元を使って考えようとする。ある事に悩むと、さまざまな考え方を持って
きてそれを解こうとする。

プログラムをつくることは、数学的な問題に似ている。
私にとっては同じような問題を解くことは苦痛なので、たいてい2度と同じ
問題を解きたくない。やむ終えずそうしないといけないときは、解法を変え
てみる。足し算の問題をしなくてはいけないときになったら、引き算でどう
すればいいのか、あるいは掛け算を使おうとするという具合だ。

例えば、3+10=を計算するとする。
これを引き算でやろうとすれば、3 = x – 10となるxを求めるようなことだ。

そんなことをプログラムをつくることに対して求める。

数学的に難しい問題はたくさんあるが、プログラムの対象となる難しい問題
もまだたくさんある。

プログラムを2つ作っているが、1つは解法がはっきりしない問題で自分が
その体系を作ろうとしていること。もう一つはRailsで人の学問に触れ始め
た感じでいる。自分の能力の問題を最近感じるが、果たしてそれをやってい
けるだろうか。

さて、このプログラム作成とゲームの類似性について考えてみたい。

プログラムを作る前に、対象を分析する。
分析された対象がはっきりしていれば、それは数学的な問題であるが、そう
でない場合がある。まず問題を作らないといけない。

問題を解くよりも作る方が難しい、これは広い意味でのリバースエンジニア
リングと考えてよい。会社の中である業務が動いている、これはコンピュー
ターシステムでも人の絡んだ業務フローでもよい。それをシステム化するた
めには、どんな業務フローであるかを分析しなくてはならない。

そして、システム導入されるとその業務フローの多くは変わるのだが、どの
ように変わるかの想像力も必要である。

ゲームで言えばアドベンチャーゲームのようなものかな。パズルなのかな。
その世界をつくっていって、ゲームにとっての効率的なフローや、ゲームの
やりがいをつくっていかなければならない。ゲームを仕事に置き換えればそ
のまま(まじめな)仕事に置き換わる。仕事が楽しいかどうかは、本人の問
題だ。

次にプログラム作成。これもゲームの効率的な進め方に似ている。
シミュレーションゲームをやっていると、意図せずにアルゴリズムをつくり
ながらやっている。プログラムが一つできるのと、ゲームで1つクリアする
のと同じような感覚がある。

ゲームをしているときとプログラムの作成が意外にスムーズなのは、この類
似性のせいかもしれない。

・ただプログラムの作成がつまらなかったりしても、仕事をとめることがで
きない。解法を面白いものにしよう。
・プログラムの作成で行き詰まったら、ゲームをするんじゃなくて、発想を
解法(発想)を変えることにしよう。

Written by in: 楽天日記 |

コメントはまだありません »


コメント&トラックバック




トラックバック URL

コメントのRSS feed