[ruby-list:552] Re: meta-level features(Re: bug? and question)

From: matz@... (Yukihiro Matsumoto)
Date: 1996-09-20 17:58:40 UTC
List: ruby-list #552
まつもと ゆきひろです。

In message "[ruby-list:545] Re: meta-level features(Re: bug? and question) 	 "
    on 96/09/20, 石塚圭樹 <keiju@shljapan.co.jp> writes:
|
|けいじゅ@SHLジャパンです. 

|>Pythonのrexecはrshを実行する…わけではなくて,ある範囲のオブ
|>ジェクトにアクセスできない状態で evalするものです.
|
|ああ. だから, rexecなんですね. プロセス空間が別々になっているイメージ
|ですね.

ちゃいます。rexecはrestricted(制限された) execです。デーモン
の方はremote execね。ややこしいのはPythonのexecはrubyでいう
evalに相当するからです。

|ObjectSpace(ObList)がそういう役割を持つことになるんですかね.  そうする
|と, ObjectSpaceはモジュールでなくてクラスになりますが...

ですからこれは考えすぎだと思います。

|>  eval "defined? obj."+method
|>などという手を使います.え? 卑怯?
|
|うーん. 長い間考え込んでしまった. defined?はnlambdaだからですね. 

nlambda…,ことさらに難しい表現を使ってません?
# 乱暴に説明するとnlambdaってのは引数を評価しないってことです。

|>Kernel#respond_to?(mid[, priv])を復活させましょうか.
|
|確かに, defined?はちょっと使いづらいですね... 

この場合にはね。というわけで復活させました。

|>アンロード…あまりやりたくないなあ….
|
|rubyでは追加は楽ですが, 削除は面倒ですね. でも, インスタンス変数のスロッ
|トが残っているのを無視すれば, 中間クラスを削除するだけですみますね. イ
|ンスタンス変数のスロットの削除を行うのは, かなりの改造が必要そうですね
|(^^;;
|
|この機能は, デバッガとかで動的にクラス定義を変えることができるためには
|必要なんですよね. デバック中であるということでインスタンス変数が残って
|しまうのはあきらめてもらうというのでも良いかも...

まあ,そうなんですけど実行させながらいろいろオブジェクトの構
造をいじっても元のプログラムが変化するわけではないですよね。
やはり,LispやSmalltalkのような開発環境と実行環境が一体化し
たもののパラダイムではないでしょうか。

|>|>|1. デバッガ. 

|トレース機能, つまり, 1ステップ実行するとprocを実行する機能なんかもあ
|ると嬉しいですね. まあ, デバッガができればあまり必要ない機能になります
|が...

これはあっても良いかも知れませんね。

|>|DoesNotRecognizeって何ですか? もしかして, subclassResponsibilty(?)のこ
|>|と? それとも doesNotUnderstand(?)のことかしら?
|>doesNotUnderstandでしたか?
|
|ああ. いわんとしたことが分かりました. でも, それってインチキだと思うん
|ですけど...

そうかなあ。由緒正しい方法ですし,インチキってことはないんじゃ
ないかと。

|>むむむ,rubyの場合プログラミング環境と実行環境は分離していた
|>方が良いのではないかという気がしています.
|
|でも, Smalltalkやemacsと逆になっているんだからいいじゃないですか? 実行
|環境の中にプログラミング環境がある. 面白いと思うんだけどなあ.

面白いとは思いますけど,やはりrubyでは無理があるのでは?

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next