プログラマに数学は必要か?
2008.02.21
私が友人と話していた時のことです。
私:3つのパラメータがあって、それぞれが独立に2つの状態を取るから、全部の組み合わせは8個になる。
友人:え、それって6通りじゃないの?
私:(もう一度説明を繰り返す)
友人:6通りだと思うんだけどなあ...
この友人、職業は医者です。ですから、理系の入試を通って大学に入っているんですけどね.....というわけで大問題「プログラマと数学」ですね。
実は私、大学は文系で文学部心理学科卒です。元々プログラミングをし出したのは、やはり心理学の実験データ解析が名目でした(ゼミの先生の著書が因子分析の本だったりしました....)。文系とは言っても数学は大好きで、教養でも数学の単位(初等整数論からカントール濃度の話になる講義でした。面白かったし、後々役にたったことがあります)を取って、「変人」みたいに見られた思い出(苦笑)もあります....
プログラミングをするようになっても、たとえば数学ベースの技術書から、アルゴリズムを取ってきて、自分で実装した(スプライン曲線とかFFTとか必要に迫られて)こともあります。そういう具合に「数学を怖がらない...」というのは非常に役にたっているようにも思います。でもそういうの、年に1回もないんじゃないかなぁ。
しかし、ちょっとしたことで、「数学センス」みたいな部分、というのは非常に「日常のプログラミング」という部分でも役立つところ、というのはあるようにも感じます。何というのでしょうか、「数理的なカン」が働くのですね。詳細なアルゴリズムの細かいところで「あ、これ情報が足りない」とか、「考え方が美しくない...」とか、かなり早いところでカンが働く、というのはあるようにも思います。また、それこそ「プログラマの教養」というか、数理的なアルゴリズムを理解する(RSA公開鍵暗号とか)あたりでも、やはりバックグラウンドが理解できますからね。
というわけで、ちょっと雑感です....
クイズ:「どんなファイルでも、かならず元のバイト数よりも小さくなる」という圧縮方式がウソであることを説明せよ。(ヒント:マッピングの問題として考えると変換先が足りなくなりますよ...)
追記:ファイルサイズが任意の n byte より小さい場合は、サイズが変わらない(あるいは逆に大きくなるとしてさえも)、としてもホントはOKです。また、問題では「バイト数」としましたが、「ビット」単位で考えても結果は変わりません。
投稿者 : 杉浦 こずえ | 投稿日時 : 2008.02.21 20:52
あすなろBLOGのトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。





