原です。

In message "[ruby-list:13446] Re: Ruby and LISP ( was Re: Ruby anywhere )"
    on 99/04/08, Wakou Aoyama <wakou / fsinet.or.jp> writes:
|
|青山です。

|私もしばらくはまったく気にしていなかったのですが、定数あたりで気が付き
|ました。
|
|$ ruby -e 'VALUE = "foo"; VALUE.concat "bar"; p VALUE'
|"foobar"
|
|定数なのに変更できるなんて!
|という感じで。

わかるわかる。多分、菊谷さんや助田にはわからないでしょう。:-)

私は Perl を主に使っていて、ruby に入ったので戸惑う所があった
のです。C を主に使っていた人は戸惑わないと思います。「変数に
はポインタが格納されている」というモデルで ruby を解釈できる
から。

Perl では $foo = "string"; $bar = $foo; でオブジェクトの複製が
作られます。ということは変数ひとつひとつにそれぞれ違うオブジェ
クトが格納されているというモデルが成り立つわけです。さらに、と
いうことは「変数=オブジェクト」というモデルでも矛盾なくやって
いけるわけです。この究極の単純さが魅力的でした。

それで「変数に対する操作」と「オブジェクトに対する操作」の区別
曖昧になりやすいんです。Perl から来た人の初期症状は。

それからオブジェクトの参照関係のネットワークが Perl4 ではぶち
ぶちに切れていたのに ruby では、あるオブジェクトに対する破壊的
な操作が、他にどう影響するかユーザーが覚えていなくてはならない
のを不安にも感じました。C 言語などを主に使っていたとすればそん
な事はあたり前の事ですが。