From: matz@... (Yukihiro Matsumoto) Date: 1998-07-30T17:37:51+09:00 Subject: [ruby-list:8965] Re: What is a ruby program? まつもと ゆきひろです In message "[ruby-list:8963] What is a ruby program?" on 98/07/30, Takao KAWAMURA writes: |Rubyにおける、プログラムの位置付けがよくわからないです。もち |ろん、擬似BNFの範囲ではよくわかるのですが、オブジェクト指向 |的な了解の仕方がわかりません。 むむむ,オブジェクト指向的な了解ですか.難しい. |たとえばEiffelだと、rootクラスのコンストラクタがプログラムの |実行を指定していますよね。 プログラムの実行が制御の流れの開始点であると考えるとCのmain 関数とかJavaのmainメソッドとかいろいろあるわけですが,Rubyの 場合はトップレベルの文がそれを担っています.これは確かになに かのメソッドではないのでオブジェクト指向的ではありません.トッ プレベルではselfがmainに設定されているので,全体がmainのメソッ ドであるという解釈は不可能ではないですが,私自身はそうは考え ていませんし,そのような解釈をお勧めするわけではありません. というのも,プログラムの実行の開始というのはどう考えても「制 御の流れ」であり,本質的に手続き的だと思うからです.Eiffelや Javaのようになんらかのオブジェクトのメソッドとしてしか処理を 記述できない文法の言語ならともかく,Rubyのような言語でこのよ うな部分までなんらかのオブジェクトのメソッドにする(あるいは そう解釈する)必要はない,あるいは本質的にメソッドでない以上 メソッドにするのは適材適所の観点からも不自然であると考えます. |そこからの類推だと、mainの特異メソッドと解釈するのが自然かな |あと思ったりするのですが、どうなのでしょう? いずれにせよ、そ |ういう記法はないですよね? 今の書き方だと、トップレベルの文 |がクラスの埒外にあるように見えてしまって、すっきりしないのは |私だけでしょうか。 「トップレベルの文がクラスの埒外にある」のは確かです.が,そ れはトップレベルの文があくまでも処理の流れだけを記述している 「クラスの埒外にある」ものだからであり,そのようなものを無理 にクラスの枠の中に収めようとしていないからです. なお,私自身は手続き的なものにまで無理矢理メソッド的記法を導 入しなければならない言語について望ましく思っていません.そう いう意味でSmalltalkには好みでない部分があります.それから, たとえばJavaのjava.lang.Mathのようなモジュールを「気持ち悪い」 とみなすような考えにも賛同はしません. まつもと ゆきひろ /:|}