yunomuのブログ

酒とゲームと上から目線

プログラマと数学

割とよく「数学わかんないしプログラミングなんて」とか「数学のできないプログラマなんて」とか、逆に「数学できなくてもプログラミングはできる」とか、そういう言葉を聞きます。よね? 私は聞きます。言いますし。
私は数学苦手だけどプログラミングは割とできる方で、「数学めんどくせぇ」とか言ってる側。数学科出身っぽい上司に「君、数学やりなよ」とか言われる。それにやっぱりすごいと思うプログラマはなんかことごとく楽しそうに数学を語ったりしている。

なんですけど、
いつものごとくid:seizansと他愛のない話をしながらの――いやなんかガッツリと関数型言語っていうかHaskellっていうか関数型言語のデータ構造の話をしていた気がしますけど、それはともかく昼食時、私が「その関数型でのFIFO実装ってJavaArrayListに似てますよね。だいたい早いけどたまに整理する処理が走る時だけは重くなる感じが」って言って、それにはseizansも同意してくれたんですけど、
あ、そのデータ構造については「Purely Functional Data Structures」に書いてあるらしいので気になる人は読んでみるといいですよ。たぶん。私は読んでないのでなんとも言えない。
Amazon.co.jp: Purely Functional Data Structures: Chris Okasaki: 洋書
PDFもあった。
http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

その時に思ったというか、思い出したというか、
忘れもしないスタートHaskell第5回の山本先生のモナド講座を聞いている時に、
第5回 スタートHaskell : ATND
「なんでこの人達(Haskeller)はここまでしてこんなに抽象化したいんだろう。いや気持ちはわかるけど」「ここまでいくともう理解出来ないな。いや気持ちはわかるけど」なんて思いながら聞いていました。
私から見ると一見全く共通点が無いような概念を、うまいこと一つの概念としてまとめてプログラミング言語に組み込んでいる。確かにそうする事できれいに問題の切り分けができているように見える。と、いうのがわかった上でもう一度見なおしても、きれいなのはわかるんだけど、問題をどう切り分けてるのかいまいちよくわかんない。

その時の山本先生の資料がコレです。興味のある方は。
「モナモナ言わないモナド入門」
http://mew.org/~kazu/material/2011-monad.pdf

で、そんな事を考えてる時に、なぜかはよくわかんないんだけど唐突に「あ、これ数学だな」と思った。
数学というのは抽象化なんじゃないかなと。
「アレとコレが似ている」っていうのは、数学なんじゃないかなと。

私はそれこそ数学苦手でここ10年近く生きてきたので、このなんとなくの感覚に対するわかりやすい例示とかはできないので、あんまし主張する意味も無いんですけど、でも数学好きのseizansに聞くとやっぱり数学は抽象化っていうか、私のこの感覚は数学の入門として正しい反応に感じるらしい。

ところで話はだいぶ飛んで、
飲み仲間にモロ文系っていうか、なんぞ文章書きやってる人がおるのですが、その人が書いた毛色の違う3つのお話を読ませてもらったことがあって、それに対して私は「3つの話のフレームワークは同じですよね」とか「違うのはコレとコレとこういう雰囲気と――」という感想を言い、それに対してさらに作者の友人が「そんな事は考えたけど言われたのは初めてだ」とか「そういう点には気づかなかった」とか言ってきて、
あー、このやりとりした時の友人の立場って、そのままモナド入門を聞いてる時の私だと思った。

この時彼は「あー、yunomuさんの視点と俺の視点は、視点だけじゃねーな、普段から脳内で使っている『言語』からして違う気がする」と言いましたけど、今にして思うと違うのは思考のロジックじゃなくて抽象レイヤだったんじゃないかと。
seizansも言ってましたが、たまに「アレとコレが似ている」と言って理解してもらえなかった事がある。逆に納得できても理解できなかった事もあると。
一般にこういうのは理系の素養と言われてる気がするし、私もそう思ってたところはあるんですけど、この「アレとコレが似ている」っていう感覚は数学の素養なんじゃないのかなぁと。思ったわけです。

で、なんだかわからないけどプログラマのブログが面白い理由の話。
プログラマが書いたブログが、なんかわかんないけど面白い。その理由は論理的だからとか趣味が似てるからとかではない気がする。「ハッカーと画家」のポール・グレアムのエッセイは、なんであれなんか妙に面白いんだ。
そういうのはこの、「一見関係ないように見えてなんとなくつながっている概念」を話題に取り込むことができるからなんじゃないかなぁと。ホラ例えばジョジョなんて、なんかあのわけわかんない喩え話が超面白いじゃないですか。いやあんまし読んでないんですけど。
こういう一見全然関係ないエピソードを結びつける能力って、数学的素養なんじゃないでしょうか。
荒木飛呂彦が数学好きだったら面白いよな。

もしかしたら私も件の友人も、潜在的には数学向いてるのかもしれませんね。

そういやこんな記事がありましたが、
電網辻々噺: みなさん、数学を勉強しないで下さい。
これを引用した時にはイマイチしっくりこなかったけど、なんとなく理由がわかったような。
計算から離れないと数学の面白さってのに辿りつけないというか、数学は思考方法なんでしょう。
たぶん。

そんなわけで、ちょっと勉強する気が出てきました。