Rubyの生産性の高さはどこまで本当か?

Rubyの生産性の高さはどこまで本当か?

なかなか面白いエントリだ。

実はこの人の言っていることは、個人的には「そうだ」と思う。

確かに「MONTSUQI+Ruby」でプログラムを書くと、「MONTSUQI+COBOL」の5倍くらいの生産性はあるので、「RubyはCOBOLよりずっと生産性が高い」ということは実感として持っている。では他の言語との比較ではどうかと言えば、私は参考にするべきデータを持っていない。

MONTSUQIはRailsのようにRubyに特化したミドルウェアではないから、Rubyの良さをかなり殺しているのは事実である。だから、これをもってして「RubyはCOBOLの5倍程度」と結論つけてしまうのも間違いである。あくまでも「こういった条件でこうだった」に過ぎない。まぁ業務システムが「COBOLの5倍」というのは、十分素晴しい生産性だと思うが。

件のエントリの話はそんな話ではなくて、「Rubyの○○はこんなに良いから生産性が高い」ということに対する反論である。「Ruby厨」や「信者」は一度くらい読んでおくと良かろう。特に後半の「追記:理想と現実」は「プログラマ」は読むべきだ。

長年この世界にいると、いわゆる「高生産性ツール」とか「高生産性言語」というものに懐疑的になる。長年この業界にいれば、鳴りもの入りで紹介されるツールや言語に踊らされ、落胆させられたことが一度ならずともあるわけで、だんだん「そう甘いことがあるわけはないよ」という気分になる。

また「高生産性人間」というのも、実は言う程じゃないということもわかっている。私自身も手が早い方ではあるが(多い日はCで数1000行/日くらい書く)、それはやはり瞬時値に過ぎなくて、年平均にしてみるといわゆる「○×標準生産性(ステップを人月に換算するためのもの)」と大差ないことになる。まー、せいぜい数倍、それも「数」は小さい方に留まる。周囲の若者でもっと手の早い奴もいるのだが、それでもやはりそんなもんだ。確かに瞬時値は高いのだが、平均すると程々に落ちつく。

いろんな「高生産性」のためのものは、確かに便利なのだが、プロジェクト全体を見ると結局程々の結果にしかならない。「トイプログラム」であれば圧倒的な差があったりもするが、「お客様にお出しできる」というレベルのものになると、そんなに差がない。それは「わかりやすい」と言われるパラダイムとか、「プロジェクトが円滑に進む手法」とかでも似たようなものだ。ダメなことをすればダメになってしまうはもちろんであるが、「良いと思われること」はどれをやっても大差ない。

これはおそらく「要求をコードに落とす」という過程が、それくらいのところに本質的な「速度バリア」があるということなのではないかという気がする。実時間よりも高速にテレビや映画を見るということは、短時間なら可能だが長時間となると無理だ…というのとも似ている。

とか考えると、何かを勧める時には実質的に大差の出ない「生産性」ではない、何か他のものを根拠にする方が良いように思う。それは「わかりやすさ」だったり「記述の自然さ」であったり、「実行速度」であったりではないだろうか。問題に適合したツールや言語や手法を使えば、その結果としていろいろなメリット(それこそ生産性とか)が出て来るわけだから。

ちなみに某プロジェクトでCOBOLを使ったのは、「業務知識を持ったプログラマが集めやすい」という理由からだったりする。Java厨あたりはいろいろ言ってくれたりするのだが、プロジェクトの始まった当時、「Linux上のJavaによる業務システム」なんてのは海のものとも山のものともついてなかった。おまけにプログラマを集めるのも難しかったのだ。