いわおかです。

In the message <EBEFIFGNGMKELGCGNMPMGEMCCKAA.yahatah / agr.kyushu-u.ac.jp>,
  on Fri, Jan 14, 2005 at 01:22:37PM +0900, Hisashi Yahata wrote:
>  最初BasicのプログラムをPerlに移植し、それをさらにRubyに移植しています。
>  Perlでは全ての変数前に$をつけなければならない書き方が嫌で、Rubyに惹かれた
> わけですので、なるべくローカル変数にして$を外しておいて、徐々にdef..endの形
> 式にしていく手順を踏むつもりでいます。また、今後は機能を加え複雑な構成にする
> 予定ですので、オブジェクト指向言語にも惹かれ、$で始まるグローバル変数をなる
> べく使わなくて済むように、Module化していきたいと考えています。

このあたりは考え方の相違もあるかと思いますが、個人的には、後に OO
で拡張する予定があるならば、最初から OO を意識して新しく書いた方が、
結果的に速いんじゃないかと思います。英語を書く時に、日本語で下書き
してから英訳すると、日本語に引きずられてロクな英語にならない(私だ
けかもしれませんが)のと同様で、「○○を××する」と「××する○○
を」という発想の転換が必要だと思うからです。

# あれ? つーことは、日本語の方が OO してる?

>  機能毎にまとめたsubであっても、その中の変数のほとんどがグローバル変数扱い
> となる場合に、引数が多くなります。データの引き渡しをdef毎(Perlのsub毎)
> に行うのと、グローバル変数として保持するのは、「演算速度」と「メンテ(および
> 発展)の容易さ」のバランスの問題と思いますが、どちらが効率的なのか、Rubyに詳
> しい諸先輩は、これをどのようにされているのかお聞かせいただけると嬉しいです。
> 具体例がなければ議論は無理かもしれませんが。

ささださんも書かれていたように、最近のマシンパワーを考えますと、
「演算速度」を最優先しなければならな状況というのは極めて稀だと思い
ます。「メンテ性」を重視した方が、目的の達成までの時間は短かくて済
む場合が往々にしてありそうです。

いわおか