Saturday 10 January 2009

プログラミング能力

いつも言っているのは「3ヵ月、3千行、動く」なんですが... (動かないコードを大量に書くのは簡単 :-p) ちなみに、プログラミング言語は問いません、Prolog, APL, VTL系はコード密度が高いので、千行で許す。

まぁ、難しいよね。一週間徹夜とかではダメだ。10行から100行程度のプログラムを何回か書いた程度では歯が立ちません。3千行読めなくても3千行書くことは出来るとは思う。

自分でも、徐々に書けるプログラムの大きさを大きくしていったような記憶がある。プログラム電卓256 stepsから始めてさ。

系統的に、3千行書く能力を身に付けさせるプログラミング教本なんてないしなぁ。

まぁ、でも、そういう本がないのは、特別な秘訣とかがないからでもある。結局は、問題を分割して、1行1行理解して、書いていくしかない。

でも、3千行と言っているのは、自分的な経験から、頭から書いていって、そのまま動く限界なんだと思うからです。まぁ、それは僕の能力の限界なので、他の人は、もっといけるかも知れないけど。

逆に言えば、3千行程度だと、「全部のコードを覚えていて、スパゲティコードで動かす」ことが可能。

僕の時には、その後に「自分で書いたコードが理解できなくなる」という壁があった。その時に書いていたのは、(今から考えると)CPS変換ベースのコンパイラだったけど、どうしてもプログラムが止まらなくなっちゃって往生した記憶がある。修論の土壇場だったし。一応動かしましたが、動作に自信がもてなかった。ま、幸いなことに、そのプログラムは「結局、ダメ」ってことで捨てたんですけど。

その後は、そういう壁にぶつからないように注意して書いているので、だいじょうぶっぽいけど、まぁ、いろいろだな。年喰って来ているから能力の限界自体は下がっていると思う。でも「全部覚えていて書ける」範囲でプログラム書いているわけじゃないから、実は、個人の能力とプログラミング能力は関係ない気もする。

3千行の壁を越えるためには、書くだけではダメで読まないとダメだと思う。特に他人の書いたものを。その辺りは経験がものを言う。

あとは、デバッグの経験かな。失敗は数多く体験した方が「あぁ、あれだ」って当たる確率は高いから。

つまり「プログラミングは若くないとダメ」ってのは「一気にスパゲティコードを書く能力は若い頃の方がある」ってだけなんだと思う。

No comments: