[#36239] ar=[];ar[0]+=2でエラー — Masahiro Sato <msato@...>

142 messages 2002/11/01
[#36240] Re: ar=[];ar+=2でエラー — SAITO Shukaku <shukaku@...> 2002/11/01

At Fri, 1 Nov 2002 17:50:11 +0900,

[#36242] Re: ar=[];ar+=2 でエラー — Nakamura Akifumi <BXQ04723@...> 2002/11/01

[#36263] Re: ar=[];ar+=2でエラー — Fujimaru Hiroyasu <f-hiro@...> 2002/11/02

 藤丸です。

[#36278] Re: ar=[];ar+=2でエラー — Kazuhiro NISHIYAMA <zn@...> 2002/11/03

西山和広です。

[#36279] Re: ar=[];ar+=2でエラー — Fujimaru Hiroyasu <f-hiro@...> 2002/11/03

 藤丸です。

[#36281] Re: ar=[];ar+=2でエラー — Kenta MURATA <muraken2@...> 2002/11/03

むらけんです.

[#36282] Re: ar=[];ar+=2でエラー — HIDAKA Takahiro <cv8t-hdk@...> 2002/11/03

 ひだかです。結構現状追認系の意見も多いみたいですが・・

[#36290] Re: ar=[];ar+=2でエラー — MORITA Naoyuki <naohaq@...> 2002/11/03

森田と申します。

[#36304] Re: ar=[];ar+=2でエラー — 堀川 久 <vzw00011@...> 2002/11/03

こんにちは。

[#36310] Re: ar=[];ar+=2でエラー — WATANABE Hirofumi <eban@...> 2002/11/03

わたなべです。

[#36311] Re: ar=[];ar+=2でエラー — 堀川 久 <vzw00011@...> 2002/11/03

こんにちは。

[#36315] Re: ar=[];ar+=2でエラー — matz@... (Yukihiro Matsumoto) 2002/11/03

まつもと ゆきひろです

[#36316] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/03

In article <1036352263.849985.17004.nullmailer@picachu.netlab.jp>,

[#36317] Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

金光といいます。質問させてください。

[#36318] Re: Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

添付ファイルが落ちてましたすみません。

[#36319] Re: Flyaway — Masatoshi SEKI <m_seki@...> 2002/11/04

[#36320] Re: Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

金光です。咳さん、どもっ。

[#36321] Re: Flyaway — Masatoshi SEKI <m_seki@...> 2002/11/04

咳といいます。

[#36322] Re: Flyaway — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/04

金光です。どもっ。あとすこし

[#36344] Re: ar=[];ar+=2でエラー — WATANABE Hirofumi <eban@...> 2002/11/04

わたなべです。

[#36347] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/04

In article <20021104160723.757540.eban@os.rim.or.jp>,

[#36367] Re: ar=[];ar+=2でエラー — matz@... (Yukihiro Matsumoto) 2002/11/05

まつもと ゆきひろです

[#36383] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/07

In article <1036531761.901892.25889.nullmailer@picachu.netlab.jp>,

[#36386] Re: ar=[];ar+=2でエラー — matz@... (Yukihiro Matsumoto) 2002/11/07

まつもと ゆきひろです

[#36394] Re: ar=[];ar+=2でエラー — Tanaka Akira <akr@...17n.org> 2002/11/07

In article <1036640262.362098.10433.nullmailer@picachu.netlab.jp>,

[#36241] NET:::HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。どもっ。

[#36244] Re: NET/HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。お世話になります。

[#36247] Re: NET/HTTPで教えてください — rubikitch <rubikitch@...> 2002/11/01

From: 金光雅夫 (KANEMITSU Masao) <masao-k@a-net.email.ne.jp>

[#36250] Re: NET/HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。どもっ。

[#36252] Re: NET/HTTPで教えてください — 金光雅夫 (KANEMITSU Masao) <masao-k@...> 2002/11/01

金光です。困惑

[#36371] クラス変数をクラスメソッドから参照する — Takashi Kanai <kanai@...4u.or.jp>

こんにちは、金井です。

14 messages 2002/11/06

[#36532] Linux Magazine Ruby初等講座 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

19 messages 2002/11/19

[#36563] [ANN] Ruby/Cache 0.2 — "Yoshinori K. Okuji" <okuji@...>

Ruby/Cache 0.2をリリースしました。Ruby/Cacheは、LRUアルゴリズムに基い

20 messages 2002/11/22

[#36612] 全角文字に挟まれた半角スペースを削除するには? — Take_tk <ggb03124@...>

16 messages 2002/11/28
[#36614] Re: 全角文字に挟まれた半角スペースを削除するには? — WATANABE Tetsuya <tetsu@...> 2002/11/28

渡辺哲也です。

[#36617] Re: 全角文字に挟まれた半角スペースを削除するには? — Take_tk <ggb03124@...> 2002/11/28

たけ(tk)です

[ruby-list:36383] Re: ar=[];ar+=2でエラー

From: Tanaka Akira <akr@...17n.org>
Date: 2002-11-07 02:56:53 UTC
List: ruby-list #36383
In article <1036531761.901892.25889.nullmailer@picachu.netlab.jp>,
  matz@ruby-lang.org (Yukihiro Matsumoto) writes:

> 不条理を感じる人がいるのは理解できますが、では変えた方が良い
> かというと必ずしもそうは思っていません。

ふむ。

> 個人的にプログラム上の識別子の「意味」あるいは「種別」は静的
> に決まるべきだと考えています。

同意します。

> 問題はその決め方ですが、上から
> 順に見ていくというのは、2パスを避けるという観点からもそんな
> に悪くないと思っています。

それほど悪くはないかも知れませんが、if then else end については制御の
流れにそって解析しても 2パスにはならないでしょう。then節でのローカル変
数に関する判定には条件節およびそれよりも上の知識だけあれば十分で、else
節での判定も同様に条件節およびそれよりも上の知識だけあれば十分です。つ
まり、ある場所での判定にはそこよりも上の知識だけあれば十分で、else節で
のローカル変数の判定に then節の代入を使わないようにしても 2パスにはな
りません。

後置 if のほうは 2パスになるかもしれませんが、普通 1行ですむような短い
文にしか使われないので、2パスにすることによる実行コストの増加はそれほ
ど大きくないように感じます。

> まあ、ローカル変数に対する代入に静的な意味(宣言)と動的な意味
> (初期化)の両方の意味を与えているのが問題の元凶ではあるのです
> が、これは目的によって見方を変えてもらうのがよいと個人的には
> 思っています。つまり、ある識別子がローカル変数かどうか判定す
> る場合には、メソッドの先頭から(実行状況は無視して)宣言だと思っ
> て代入をスキャンしてすれば良くって、逆にローカル変数の実行時
> の値に関心がある場合には、そのまま代入として見ればよいのでは
> ないかと。

なぜユーザは「メソッドの先頭から(実行状況は無視して)宣言だと思って代入
をスキャン」すべきなんでしょうか?

プログラムというものが小説のように上から下に読んでいくべきものならそう
なのかもしれませんが、私はそうは思いません。私は根から葉に(なるべく余
計な葉には寄らずに)読めるべきだと思います。else節を読むのに then節も読
まなければならないというのが適切だとは思えません。

また、ローカル変数の静的な意味(宣言)は動的な意味(初期化)の近似でもあり
ます。一般に、ローカル変数に限らず、静的な意味は動的な意味の近似です。

そして、現在の上から下に検査するというのは近似としてはそれなりに適切で
す。とくに、プログラムの上から下に流れる部分については正確ですし、ルー
プに関してはボディ内は(参照できるときには必ず代入されていると言う意味
で)保守的な近似になっていて、ループの終了後は(ボディが一回も実行されな
い場合を無視しているという意味で)非保守的な近似になっています。クロー
ジャのようにいつ実行されるか不明でどうしようもない話を気にしないことに
すれば、残りは条件分岐です。

そして、あげた例のように、条件分岐については近似として見当外れなところ
があり、少なくともそこはよろしくないんじゃないかと思います。

ついでにいえば、今回の発端をこの見方からとらえなおせば、近似をもっと保
守的にして欲しいという要求だと解釈できるのですが、私の要求は見当外れな
ところを直せというもので狙いが違うので割り込むような形ではなく独立して
始めるべきだったかもしれませんが、それはそれとして。

> 知ってますが、そのプログラム解析のコストは割りに合わないので
> はないかと考えています。

むろん、まつもとさんが知らないと思っていたわけではありません。

コストについては... もちろん解析のコストは増えるのですが、その理由がパ
スが増えるからという点については納得しがたいものがあります。上で述べた
ように if then else end についてはパスを増やさなくてもいいわけですが、
仮に、「後置if はそのままでいいから if then else end については変えて
欲しい」という提案にしたら受け入れられるのでしょうか?
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)

In This Thread