dotkuwaの日記: 自分で考えたプログラム生産性100倍の要因の例 1
最終的にはもちろんプログラム生産性100倍の要因は、それこそ統計学者が設計した方針に基づき、万人単位で生産性の
高い人を調査し、有意な要因を確定させるべきでしょう。
しかし、なかなかそうも行かないでしょうから、それなりにプログラムを作ってきた自分が、自分限りで思っている事を
述べます。
-------
NHKで「神の数式」という番組があり、その中で、ディラックという人が、ローレンツ対称性というものを利用して
シュレディンガー方程式を改良し、ディラック方程式を作ったが、見通しが良くなったというエピソードが有りました。
それになぞらえて考えると、プログラム生産性100倍の要因の1番目は、「環境対称性」が見える事では無いか?と思います。
ここで環境対称性とは、
・プログラムの要件(プログラム自身から見ると環境)が“少しくらい”変化しても、プログラムを変えずに対処できる
という事とします。
「“少しくらい”」というのが付くのが物理学との違いで、あらゆる環境の変化に対応出来るなら、1つのプログラムで
全てが済んでしまうが、それはあり得ない以上、「“少しくらい”」が付いてしまうのでしょう。
まさにおたくの趣味だと言われてきたことかも知れませんが、
・要件が固まりきっていなくても機械的に出来る改良
・仕様バグを検知できる唯一と言っていい方法
で、悪いはずが有りません。
オブジェクト指向なんてのも、結局、環境自身をフィールドとして翻訳単位に取り込むことにより、環境対称性を
実現する1つの方法でしょうし、関数指向なんていうのも、同じ方向だと思います。
-------
プログラム生産性100倍の要因の2番目は、もちろん「手ばやさ」だと思います。環境対称性とか言って、プログラムを
好きにこねくり回しても、凍結をだらだら延ばしたり、(あろう事か)凍結後にいじろうとしたりしたら、全く
ぶちこわしです。それに生産性と手ばやさは同じ方向性だと思います。
プログラム生産の手ばやさにはある信条を正しいと思っているか否かでは無いかと考えます。それは、プログラム分野で
の「連続体仮説」です。
要するに、
・自然言語とプログラム言語の間には他の「濃度」の言語が存在しない
のでは無いかという仮説です。
日本語など(何語でもいいですが)は、自然言語全部とプログラム言語のごく一部を表現できますが、
・要件(正しさ)は自然言語で表現する方が有利(なぜなら実社会でそうなっているから)
・品質(正しさ)はプログラム言語が有利(なぜなら実行環境でそうなっているから)
でしょう。
なので、“プログラムを作る(単体テストもする)”時点では、日本語など(何語でもいいですが)は要件は十全に
表現できたとしても、後者はたまたまうまく行く場合が有るだけで、見えない(表現できない、無理に表現しても
個人の勝手な記法になってしまい訳が解らなくなる)箇所が続出するのに対し、プログラム言語優位でやると、全て
見えるので、自然に高い生産性が得られるという理屈です。
まぁ、ネイティブ表現で考えた方が早いというだけに過ぎませんが。。。
連続体仮設 (スコア:1)
HTMLは、かなり中間的に感じる。
まだ立ち位置が落ち着いていないだけなのかもしれないが。