[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では無理があるのでは?
まつもと ゆきひろ /:|)