感覚的な思考

プログラミングのスピードを上げる方法 - teruyastarはかく語りき
プログラミングのスピードを上げる方法2 - teruyastarはかく語りき
プログラミングのスピードを上げる方法3 - teruyastarはかく語りき

全部ちゃんとは読んでないけど言及してみる。


私も「感覚的な思考」中心でプログラミングをしている人間だと思います。感覚的なだけに言葉にして説明するのが難しいのですが、マルチスレッドプログラミングを例にして友人と話していたことがあるので、それを少し書いてみます。

初めてマルチスレッドプログラミングを経験したとき、多くの人が苦労したかと思います。複数のスレッドの動きを頭の中で追いかけてみてもすぐにわけわからなくなって破綻したり、ものすごく時間がかかったり。論理的な思考だと、スレッドが2つのときと3つの時と10個のときとそれぞれ別々に考えたり、具体的な処理内容を細かく考えたりするのではないでしょうか。それはものすごく頭を酷使する上に時間もかかります。

感覚的な思考だと、スレッドの数は「ひとつ」か「たくさん」かくらいしか意識しないし、それらが同時に走ってることは意識しても中の細かいことはあまり考えません。考えてはいるんだけどとても感覚的で、言葉にするなら「考え込まない」ってくらいしか思いつきません。で、あとはもう自然に「わかってしまう」という感じです。なぜかは説明できません。わかってしまうのだから仕方ないとしか。

じゃぁどうやったら感覚的な思考ができるようになるのか、というとたぶんとてもありきたりで、ひたすら繰り返すしかないでしょう。とにかくスレッドを使ったコードを書いてみる。「考え込まず」に書いて動かしてみる。それの繰り返し。そのうち気がつくと「わかってしまう」という状態になってます。登さんの言う「努力しないこと」というのは、感覚的な思考ができるという前提の元であって、それができるようになるまでは努力するしかないんじゃないかな。


あと、ポインタで挫折した人って、論理的な思考のまま頑張っちゃた人が多いんじゃないかな。