コピペプログラミングを肯定してみる試練

一般的に、ソースコードをコピペしてプログラムを作るのは悪いことだと言われている。
コピペしないで抽象化して関数にすることの利点、コピペすることによる害はあちこちで指摘されていることだ。
本当にコピペプログラミングは悪いことなのか。
コピペのいい所を考えてみる。


・同じコードがあちこちにあることで、一箇所に限定した修正ができる。一箇所直すだけで全体に影響しない。
・呼び出しのオーバーヘッドがないから高速。
・ソースがそこにあるので何をやってるのかその場で見れる。
・自分のコードに合わせて柔軟に仕様変更できる。
・関数呼び出しよりもさらにキー入力が少ない。
・ある程度は理解しないとどこからどこまでをコピペすればいいのかわからないから、最低限の勉強は必要である。


どんなものでも、いいところもあれば悪いところもある。
コピペプログラミングの欠点をどのように克服するかという問題の、ひとつの回答が関数化なわけである。
関数での抽象化を更に発展させたものがオブジェクト指向であり、いまのところこの方向で進化が続いている。
だが、関数化によりコピペプログラミングの利点もつぶされているわけで、関数化はあくまでも回答のひとつでしかなく、コピペプログラミングの利点を残しつつ、欠点を克服するようなアイデアもあるのではないだろうか。
現在の進化の方向を、刷り込まれた思い込みだけで肯定するのではなく、根本的な問題点を理解してみて、別の進化の方向を考えてみるのも悪い話ではないだろう。
ひょっとしたら、コピペプログラミングにより劇的に信頼性と生産性がアップするプログラム言語や、そういう新しい手法が生み出されてもおかしくはない、と思う。