ウォンツテック

そでやまのーと

プログラミングと数学

プログラミング能力と数学能力(素養)にはどの程度の相関関係があるのか時々考える。私は「数学ってそんなに必要じゃないっしょ」と考えている。若くしてトッププログラマとなる人たちというのはおおよそ子供の頃から寝ても醒めてもプログラミングをしている人種でありそれほど数学に対しては勉強時間を割いていなかったんでないかと思うし、そういった人間がトップにいる理由たらしめるのは数学能力ではなく、もっと違う、例えば広範囲の情報を要領良く脳内でまとめ上げ整理するような能力や文型方面の能力が必要に思える。数学に関しては論理的な思考やアルゴリズムを考えるときのツールとしての数学さえ勉強しておけば十分ではないだろうか。ではツールとしての数学とは何か。ツールとして数学を使う学問の代表として物理学が上げられるが、これは徹底的にやらなければならない。場の量子論に出てくるヒルベルト空間ではノルム空間、関数解析、集合位相論のように関数自体が集合の要素となるような抽象的な数学も勉強する必要がある。コンピュータの世界は基本的に有限である。理想化されたチューリングマシンもその濃度はたかだか\aleph_0である。学問の基礎たらしめている部分が有限なのでそれほど数学的な複雑性(無限を扱う学問に比べて)は無いんではないだろうか。
※ただし、学問として最先端の研究をする場合は全く別。物理学がこの宇宙に存在する4つの相互作用(重力、電磁気力、弱い相互作用、核力)を理論統合した究極の方程式を完成させても他の学問が無くならない理由と同義

ツールとしての数学自体には種々議論はあると思うが受験数学〜大学初等くらいで十分ではなかろうか。デバッグする時の根気強さとして受験数学は役に立つような気がする。特に大数の学コンのような難問を1ヶ月の間考えつづけ答えを捻り出す作業はいい経験になると思う。高校生プログラマーだったらプログラミング8数学2くらいで勉強しておけば後々いい影響は出るかもしれない。


と、まともなプログラミング歴が1,2年程度でプログラミング能力ゼロのど素人が見当違いの事を考えてみました。。