2023年6月2日金曜日

プログラムのバグはプログラマがバカなのが原因か、オブジェクト指向言語が原因か

現代のマイクロソフト製OSを使っていると、バグが多いこと、なぜこんなくだらないバグが入ったのか不思議なこと、なぜすぐにバグを修正できないのか不思議なことの3つを感じる。マイクロソフト製品でもMS-DOSはバグが少なかったが、あれはマイクロソフトが作ったものではない。Mac OSもOS9まではバグだらけでストレスが溜まった。バグが少ない、あるいはすぐに修正されるのはUNIXとそれの派生OSくらいだ。

50年前のプログラムは今よりずっとバグは少なかったし、バグはすぐに修正できた。それはプログラムの規模が小さかったからが最大の理由なのだが、それだけではないと私の心の叫びが聞こえる。

50年前のプログラマに今と同じくらいの大規模プログラム(1000万行を超えるようなもの)を書かせても、今ほどバグは生まれないと思う。50年前のプログラマは今のプログラマより数段賢かった。その結果、
  • プログラムの仕様策定段階で無駄な機能を切り捨てることができる
  • どんなに大規模のコードでも全体を見渡してプログラム構造設計ができる
ことにより、バグが減る。

今のプログラマはバカなので、必要な機能と無駄な機能の切り分けができない。そもそも、プログラマにその権限がなかったりする。そして大規模コード全体を見渡す能力がないから、見渡せなくてもよいようなオブジェクト指向言語を使ってしまう。オブジェクト指向言語こそバグを生み出していることにほとんどの人は気付いていない。オブジェクト指向言語では、他人が設計したクラスの詳細なコードを理解しなくてよいのだが、それがバグの原因となる。結局、コードを全部頭の中に入れなくてはバグは取れないのに、無駄にクラスが多かったりメソッドをオーバーライドしたりしているから、全部を頭の中に入れる作業が非効率になってしまう。

どんなにプログラムの規模が大きくても、マクロアセンブラと関数型言語(C言語みたいなの)で書いた方が、可読性がよくなり全体を見渡すことが簡単になる。その結果、バグが入りにくい。

この理屈は私のような天才プログラマだけにしか当てはまらないのかもしれないが、私の直感はこれは一般プログラマの多くにも当てはまると告げている。

0 件のコメント:

コメントを投稿