プログラミング能力について思い直す

This entry was posted by on Wednesday, 9 May, 2007

昨日ちょっと書いたことは、自分のなかでなんとなく思っていたこととはまったく逆のことになっていた気がする。

つまり、 FizzBuzz はともかくけっこう簡単なプログラムでも(それこそ線形リストを実装するとかそういうレベルで)まったく書けない4年生というのは山ほどいるのだが、卒論のころには意外とみんななんとかなっているということにはもっと注意した方がいいだろう、ということが言いたかったのである。

もちろん、昨日書いたように奇妙な手段で迂回しちゃったのもいるだろうが、そういうのはそれほど多くはないだろう(きちんとスケールするきちんとしたプログラムを書いたかどうかは、また別かもしれないけれど、すくなくとも問題を解くプログラムを書いている)。

つまり、ここでいいたいのは、書けないのは経験がないからだということ。ようするにイディオムが体内に蓄積されていないのだろう。簡単なプログラムからひとまず書いてみる、っていう考え方があるが、この「書いてみる」をやるためにはイディオムというのがいっぱいある。

情報系の大学生がどれくらいの時間をプログラミングに割いているか。わたしの大学だと、演習のような毎週1コマ何かやる、というタイプの講義はほとんどなかった。あとはみな座学である。これではイディオムは身につかないし、そういう人間なら、たとえば for 文をどう書くかというところで一瞬、手が止まってしまうことだってあるだろう。すると「FizzBuzz問題すら解けない」みたいに思えてしまう。

ここから「座学ばかりやるのはダメだ」と言うのは簡単だ。でも、イディオムを身につけるなんていうのは、とにかく手で打ち込むとかいった類の地道な練習を1ヶ月くらい研修で積めば、できるようになるだろうと思うのである。現場的な感覚は重要だが、大学で教えることか、と思う。現場的な勘所というのは、企業や部署、仕事内容によって変わることだという気がするし。

そしてイディオムも身につけてふつうにそれなりのプログラミングができたあと、残りののびしろはコンピュータサイエンスの講義で学んだことが(覚えていれば)下支えしてくれる。……というか、すくなくともそういうことを期待して座学というのはやられるのである。座学がダメに見えるのは、ダメな座学をやっているか、ダメな学生で学んだことが生かせてないかだろう。

伝聞で聞いた話でガセかもしれないので名を伏せるが、とある有名な研究者の人(仮にAさんとしておこう)は、まったくプログラミングをしたことがなかったのだそうである。Aさんの研究分野は(すくなくとも学生のころは)ガチガチの理論系。けっきょく博士号を取るまでほとんどプログラムを書いたことがなかったという。でも今では理論系じゃなくて実装寄りの話もしているし、実際にソフトウェアを開発し公開しているのである。

そういう視点で見ると、「くだらないパズルのようなもの」をやるという話は、「プログラミングの経験はなんとでもなる」という見切りが済んでいて、そのうえで「のびしろ」を見たいという感覚なのだろうと思う。

もっとも、これは日本の事情がいっぱい絡んでいて、もともと翻訳の記事なのだからアメリカの事情はよく知らないけれど、まあ、そんなことを思ったのだった。

One Response to “プログラミング能力について思い直す”

  1. shiro

    ただ、手を動かしてみないと座学でやってることの必要性が実感できない→身につかない、って危険はあるかもしれません。