有能なプログラマの必要性(ヴィルトの法則を打ち破れ)

有能なプログラマは減少しているのだろうか??

ヴィルトの法則によると、ハードウェアスペックの高速化とともに
ソフトウェアは低速化するということだ。


これは、ソフトウェアでの高速化を実現できる人材が減少しているのか?
それともソフトウェアでの高速化が難解化しているのか?


確かに、昔に比べてパフォーマンスを気にするプログラマは減少しているように
思う、加えて成果物としてのソフトウェアもパフォーマンスよりも可読性、メンテナンス性の方が重要視されるようになってきた。


一つは昔に比べ社会のIT化需要が高くなり、プログラマの能力を問わず、プログラマと呼ばれる職業(※日本の場合)の絶対数が増加したことだ。これにより高速なプログラムよりも、可読性、メンテナンス性に照準を合わせたプログラミングを強いられるようになった。


一つは高級言語の普及。これは生産性向上とも関連があるが、高級言語は多少なりとも低級言語よりパフォーマンスは落ちる。その中でもスクリプト言語はさらに低速である。


”会社は集団だがその集団で成功するためには、自分の考えが集団的であってはならない” 


マーフィーの言葉である。


もし有能なプログラマが集団のためにコーディングスキルレベルを落としてコーディングをするということは、結局は集団のためにならない。


コーディング標準を全否定するわけではないが。標準という名のもとにコーディングレベルを偏差値50以下に抑えているような標準化は成長を阻害していると言わざるをえない。


”成長していないなら死にかけているんだ”


ディズニーの言葉である。


実はパフォーマンスを追及していくとメンテナンス性、可読性は向上する性質もあるのではないかと思う。理由は簡単、パフォーマンスを向上させるコーディングはある決まったパターンに沿っているからだ。例えばソートを例に出すと、現在もっともパフォーマンスが出せるロジックはクイックソート(※改含む)これは分割統治法に基づく実装で、これ以上のパフォーマンスを生み出すロジックは現在は見つかっていない。

同様に、ハッシュ関数やポインタの使いどころもある程度決まってくる。


つまり、パフォーマンスを追及したロジックはわかる人が見るとわかるように作られているはずなのである。

当然、ロジックに対しパフォーマンスを追及しなくなる人が増えると、全体としてパフォーマンスを追及したロジックはトリッキーなコーディングと罵られるようになるだろう。

罵られるのがいやで誰も高速なコードを書かなくなると、いずれそういうコーディングスキルの必要性が低くなり、ヴィルトの法則に従い、さらにソフトウェアの低速化は進んでいく。


いずれハードウェアスペックの高速化は限界が来るだろう。そうなったときにシステムパフォーマンスを向上させるために低級言語を使用することは現状、難しいように思う。システムパフォーマンスを向上させるのは気合でもなく、根性でもなくただ一つコーディングスキルしかないのである。