私は実は設計とやらをせずに書くいわゆるクイックハックのようなコーディングが出来ない。この身からすると、「〜〜なプログラムを書く」(例えば体重と体脂肪率のデータを取ってきてグラフ化するプログラムを書く)という単純なものでもデータ抽出、CGI等々の相互のインターフェースを定義してその規約をもとに書くということをやらずにはいられなくなる。ある一つのファイルにデータを抽出する部分とCGIとして出力する部分をごちゃまぜに書くということは強制されない限り出来ない。
要するに私は使い捨てプログラムを使い捨て風に書くという割り切りが出来ないということである。
それがどういうときに問題になるのか。一つは鈍重であると評価されるという可能性だ。例えば「チャットの発言回数を見たいなぁ」という会話がチャットの内部で起きたとする。ある人はおそらく非常に素早く目的の条件を達成できるであろう。それはperlによって数行で実現される。私はといえば、まずファイルをどう取り扱うか、ファイルハンドルをどう受け渡すか、返り値か引数か、等を考え、それをもとにインターフェースを定義して書きはじめる。同じ結果を出すのにpythonで100行かかるだろう。
あるいは、本当にプログラミング能力について疑いをもたれることもある。私は7行プログラミングやICPCといった、速度を重視される課題には全く立ち打ち出来ない。ICPCについて、仮に回答の方向性が見えたところで、次にでてくるのは入出力やらに関するインターフェースの善し悪しの選別段階で、プログラムを書く段階にはならない。締切前にやっつけ仕事でモノをあげる、と言うことも出来ない。
ちなみに勘違いなきように書いておく。ここでは「設計的段階がかならず重い形で挟まる」という私の癖を言っているだけで、私が設計に対して何か高い能力を持っているとは言っていない。私は設計を行なう上で取るべき仮定をかなりの頻度で間違える。
あと、ここで書かれた設計という言葉が世の設計という言葉と一致しているのかも疑わしい気がしてきた。考えてみれば設計について勉強したことはない。それが重要だと言うことだけ教えられていても、それをどう実現するかについての見通しを与えられたことはない。なんとものんきな23歳であることよ。
要するに私は使い捨てプログラムを使い捨て風に書くという割り切りが出来ないということである。
それがどういうときに問題になるのか。一つは鈍重であると評価されるという可能性だ。例えば「チャットの発言回数を見たいなぁ」という会話がチャットの内部で起きたとする。ある人はおそらく非常に素早く目的の条件を達成できるであろう。それはperlによって数行で実現される。私はといえば、まずファイルをどう取り扱うか、ファイルハンドルをどう受け渡すか、返り値か引数か、等を考え、それをもとにインターフェースを定義して書きはじめる。同じ結果を出すのにpythonで100行かかるだろう。
あるいは、本当にプログラミング能力について疑いをもたれることもある。私は7行プログラミングやICPCといった、速度を重視される課題には全く立ち打ち出来ない。ICPCについて、仮に回答の方向性が見えたところで、次にでてくるのは入出力やらに関するインターフェースの善し悪しの選別段階で、プログラムを書く段階にはならない。締切前にやっつけ仕事でモノをあげる、と言うことも出来ない。
ちなみに勘違いなきように書いておく。ここでは「設計的段階がかならず重い形で挟まる」という私の癖を言っているだけで、私が設計に対して何か高い能力を持っているとは言っていない。私は設計を行なう上で取るべき仮定をかなりの頻度で間違える。
あと、ここで書かれた設計という言葉が世の設計という言葉と一致しているのかも疑わしい気がしてきた。考えてみれば設計について勉強したことはない。それが重要だと言うことだけ教えられていても、それをどう実現するかについての見通しを与えられたことはない。なんとものんきな23歳であることよ。
コメント (17) |
トラックバック (1) |










