from a high Tar projects

プログラミングに必要なのはセンスではなく、マナー

よくセンスのないプログラミングなどという。君にはセンスがないからプログラミングには向いていないであるとか。しかし、これはただの言い逃れか、単に無知なだけではないだろうか。

プログラミングの善し悪しを調べる基準には2つある。一つは実行効率がよいかどうか、もう一つは変更に耐えうるかどうかという点である。はじめの方はようするに実行速度が速いかどうかということであり、もう一方は仕様変更した場合に故障を生み出す確率が少ないコードがかけているかどうかということである。

実行効率についてはたしかにある種のひらめきが必要な場合も多いかもしれない。ただしほとんどの場合はすでに長年研究されてきたアルゴリズムを学習することで、かなり克服することができる。また、他の優れたプログラムの模倣などを行うことにより一種の文法のようなものを学んでいくことでも改善できる。

変更に耐えうるプログラムを作ることができるかどうか。これは、間違いなくセンスとは何の関係もない。ようするに何をしてはいけないのか、何をしたほうがよいのかということを知っているか、知らないかの違いだけである。それはいわゆる他人に対する配慮があるかどうかの違いであり、いわゆるマナーの世界である。例えば、「カットアンドペーストで同じようなコードを埋め込まない」というのは、他人がプログラムをみた際に全体の把握をしやすくするための、ひとつのきまりごとである。

あえて、どちらが重要かどうかということを挙げるとするなら、私は変更に耐えうるプログラムかどうかということの方が重要だと考える。なぜなら、もしプログラムの実行効率が悪かったとしても、もし変更に耐えうるプログラムならうまく流用してアルゴリズムだけを変更してしまえばよいが、変更に耐えられないプログラムを変更に耐えうるプログラムにすることはかなり困難である。むしろ作り直した方がよい場合が多い。それに、かなり強引な意見ではあるが、ハード的なスペック向上によりレスポンス改善がみこめるが、変更に耐えられないプログラムはどうしようもない。

実際の現場において、プログラムをみてため息をついてしまうのはマナーがなってないものだけである。極端にネストが深かったり、大域変数の羅列が続くような、理解するために努力と根性が必要な「体育会系プログラム」ほど参るものはない。コンパイルを通すのも一苦労である。むしろ、このような非常にこんがらがった奇妙で複雑なプログラムを理解するためには、センスが必要かもしれない。すくなくとも、私にはこのようなセンスはない。

プログラミングはいわば車の運転ににている。多少のリスクも省みず不可能を可能にするレーシングドライバーのような才能(センス)を必要とする仕事もある。しかし、私はそのような仕事は少ないと思う。むしろ、タクシーの運転手のように顧客の要望を理解し、他の車や顧客に気を遣いながら安全運転をする仕事が、ほとんどではないだろうか。

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送