Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ruby vs python?? ^^;;; (Re: send POST request with telnet)

14 views
Skip to first unread message

Shugo Maeda

unread,
Mar 3, 1998, 3:00:00 AM3/3/98
to

前田です。

# そろそろfj.lang.perlははずしません?

suz...@otsl.co.jp (SUZUKI Hisao) wrote:

|ところが ruby の yield は,していることは CLU と結局は同等だとし
|ても,概念的にはむしろ引数として渡された関数の呼出しとして理解す
|るのが分かりやすいものなんですよね。最初 ruby の yield を見たと
|き,それが関数呼出しみたいに戻り値をもってくるということを知った
|時点で目が点になりました。名前を拝借(?)した以外,とても CLU 等か
|らひっぱって来たもののようには思えませんでした。

このおかげでsubみたいなイテレータの使い方がでてきたので、これは
大きいですよね。
# このおかげでイテレータという名前がふさわしくなくなってきたとも
# 言えますね。

|reload はどうでしょうか? モジュールをロードし直すものです。

unloadができないので定数定義とかがあるとまずいのですが、
一応loadを使えば何回もロードします。
requireの場合は一度しかロードしません。

|そうすると,もちろん定義されているクラスの一覧,モジュールの一覧,
|大域変数の一覧もとれますよね?

クラスの一覧は

ObjectSpace.each_object(Class) do |klass|
...
end

のようにイテレータでとれます。
モジュールは、

ObjectSpace.each_object(Module) do |mod|
unless mod.kind_of?(Class)
...
end
end

みたいにしないといけません。
Class.ancestors.include?(Module) == trueなので...。

大域変数の一覧はとれなかったような気がします。

|> (3) これはできません.そういうのは言語に組み込むものではな
|> いと思ったからです.特にインタプリタが大きくなるのを嫌
|> いました.
|
|Python が __doc__ 属性をどうやって設定するのか確認しましょう。
|Emacs Lisp (全世界で最も広く使われている Lisp の一つ :-) と同じ
|く,定義本体の最初にリテラル文字列があった場合,それを説明文書と
|して取り込むのです。インタープリタとしては,コメントを読みとばす
|だけの手間とそう変わりません。

Pythonが定義本体の最初の文字列リテラルを特別に扱うのと、Rubyがifの
正規表現リテラルを特別に扱うのは、似てません?
Rubyが文字列処理に特化した機能を持っているのと同じように、Pythonも
対話的環境に特化した機能を持っているわけですね。
もっとも僕はそれが悪いことだとは思いませんが...。

# 実は以前Pythonのドキュメント機能のようなもの(その時はLispを
# 意識していたのですが)をリクエストしたことがあるのですが、
# その時もまつもとさんは乗り気ではありませんでした。
# まつもとさんはドキュメントを書くのがあまり好きではないという
# 要素も大きいような(^^;

--
前田 修吾

SUZUKI Hisao

unread,
Mar 4, 1998, 3:00:00 AM3/4/98
to

鈴木です。

記事 <8667lwidxf.fsf@totally-fudged-out-message-id> より


>|Python が __doc__ 属性をどうやって設定するのか確認しましょう。
>|Emacs Lisp (全世界で最も広く使われている Lisp の一つ :-) と同じ
>|く,定義本体の最初にリテラル文字列があった場合,それを説明文書と
>|して取り込むのです。インタープリタとしては,コメントを読みとばす
>|だけの手間とそう変わりません。
>
>Pythonが定義本体の最初の文字列リテラルを特別に扱うのと、Rubyがifの
>正規表現リテラルを特別に扱うのは、似てません?

いえいえ,次の意味で似て非なるものです。

もし Python が定義本体の最初の文字列リテラルを特別扱いしないとし
ても,プログラムの振舞は (__doc__ 属性を除いて) 変わりません。単
なる式文として扱われ,評価して得られた文字列値は捨てられるだけで
す。事実上,コメントと同じで,プログラム本体にとっては透過的です。

これに対し,Ruby の正規表現リテラルの特別扱いは,これをしなかっ
たとしたら,多くのプログラムの振舞が変わってしまいます。オプショ
ン扱いにして *なかったこと* にできる性質のものではありません。言
語仕様に,消すことのできない特記事項 (一貫性の崩れ) をもたらして
います。

# もっとも,あれは *筆記* 上の速記方法だと考え,正則な ruby 式
# に変換するテキスト・コンバータを想定すれば,両者の差異は消え
# るかな? そんなものがプリティ・プリンタの1バリエーションとし
# てでも用意されていたら,ありがたいような気がします。


>Rubyが文字列処理に特化した機能を持っているのと同じように、Pythonも
>対話的環境に特化した機能を持っているわけですね。
>もっとも僕はそれが悪いことだとは思いませんが...。

Java の /** */ と同じく,自動的かつクラス階層を反映してシステマ
チックにドキュメントを生成するための枠組が標準で用意されている,
ととることもできますよね。ひょっとしたら javadoc の python 版み
たいなものも,探せばもうあるかもしれません ?_?

--
SUZUKI Hisao >>> def fib(n): return reduce(lambda x, y:
suz...@otsl.co.jp ... [x[0] + x[1]] + x, [None]*n, [1L, 1L])

Shugo Maeda

unread,
Mar 4, 1998, 3:00:00 AM3/4/98
to

前田です。

suz...@otsl.co.jp (SUZUKI Hisao) wrote:

|これに対し,Ruby の正規表現リテラルの特別扱いは,これをしなかっ
|たとしたら,多くのプログラムの振舞が変わってしまいます。オプショ
|ン扱いにして *なかったこと* にできる性質のものではありません。言
|語仕様に,消すことのできない特記事項 (一貫性の崩れ) をもたらして
|います。

確かにこれがなくなると困る人は多いでしょうね。
~というメソッドもあるので、互換性を考えなければなくても構わないと
思うのですが、なくなったらなくなったでPerlから来た人から不満が出る
気もします。

|>Rubyが文字列処理に特化した機能を持っているのと同じように、Pythonも
|>対話的環境に特化した機能を持っているわけですね。
|>もっとも僕はそれが悪いことだとは思いませんが...。
|
|Java の /** */ と同じく,自動的かつクラス階層を反映してシステマ
|チックにドキュメントを生成するための枠組が標準で用意されている,
|ととることもできますよね。ひょっとしたら javadoc の python 版み
|たいなものも,探せばもうあるかもしれません ?_?

Rubyも=begin/=endを使ってドキュメントを自動生成させるという構想は
あるのですけど、Pythonの__doc__みたいなのはまつもとさんのポリシー
が変らないかぎり取り入れられなさそうです。
前にRubyをエディタに組み込んだ時に欲しいと思ったんですけど、今の
Rubyの使われ方からするとあまり要らない機能なのかもしれません。

--
前田 修吾

0 new messages