From: OOTANI TAKASHI Date: 2004-04-08T23:32:44+09:00 Subject: [ruby-list:39514] Re: int/int in Ruby2? 大谷と申します。 今までは、 「/の結果をデフォルトで分数にするなんてとんでもない」と思ってましたが、 今回の坂野さんのまとめ投稿は非常に説得力があったと思います。 ここで触れられていない事項で気が付いたのは、C/Fortranでは変数に型が あるため、A=X/Y という式を見たとき、X と Y の宣言部を見れば / が 実数除算か整数除算かすぐわかるのに対し、ruby ではそうは行かない、 (まあ、X.to_i/Y.to_i と書いてあれば別ですが) というのがあります。ただこれは坂野さん案の補強にはならず、 実数除算か分数かすぐわからないという面では同じです。 分数のほうが整数除算より実数除算に値として近いので多少の補強には なると思いますが。 この点、Microsoft系BASICは、8bitパソコン時代から今のVB系にいたるまで 両辺の型にかかわらず / は実数除算、\ が整数除算となっており その面ではわかりやすいですね。 また、坂野さんが分数案のメリットとして挙げられている点の多くは / を常に実数除算とする案にも当てはまると思います。 初心者についてですが、rubyでプログラミング入門して一生rubyしか 使わないなら確かにその通りと思いますが、ほとんどの人は、他の言語にも 手を広げることと思います。その時 ・その時はプログラミングの初心者じゃないのだから驚きもすくない のか ・整数/整数は分数に決まっていると思い込みがあるので、他の言語に 直接入門した人よりさらに驚きが大きい。間違いもしやすい のどちらかが多いのか、ちょっと経験が無いのでわかりません。 似たような話で、実は私はCより先にLISPを知ったので、C で 0 || 3 が、 3でなく1となるのが非常に意外だった記憶があります。間違いもしたような。 また、数学しか知らない人のプログラミング入門には、I=I+1 という難関(?)も ありますよね。(代入が = でない言語も少なくはないですが) 他にも、小数演算の誤差問題、C だとポインタ、ruby だと少し前MLを賑わせた 変数とオブジェクトの関係等難関は多いと思います。 それらに比べると / は難関としては小さいように思います。 rubyで大きなプログラムを書いた経験が無いので、私の意見としては 何とも言えないのですが、せっかくの長文のご意見なので 感想を書かせていただきました。 From: Masaaki Sakano Subject: [ruby-list:39484] Re: int/int in Ruby2? Date: Sun, 4 Apr 2004 02:12:03 +0900 > 坂野 正明です。 > > # 拙論では入門者(特にプログラミング言語全般の)にとって、 > # int/int => rational が優しい(←易しいではない)、となって > # います。実際に入門者の方々の意見が伺えたら言うことないのですが…。 -- OOTANI TAKASHI