パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Rubyの世界的人気度、TIOBE 9位に上昇」記事へのコメント

  • 割り算 (スコア:1, 興味深い)

    by Anonymous Coward
    ちょっとしたテキスト処理とか、ちょっとしたネットワーク処理とかにRubyは便利なんだけど、
    ちょっとした計算をするプログラムが書き難い気がする。

    特に、割り算(/)の定義がCに合わせてあって、整数と実数とで扱いが違うのが不自然。
    たとえば、この三角形の面積を計算する関数が間違いだというのは、どうも納得がいかない。
    def triangle(base, height)
        base * height / 2
    end
    もちろん、to_f とか quo を使ったり、引数に整数が来ないように気を付けたりすればいいんだけど、
    そういうことに気を使わなければならない必然性が良くわからない。

    元のCの場合にはこの問題は起きないわけだから、単純にCに合わせるというのは合理的でないし、
    実際PerlやPythonではCに合わせなかった。そこを敢えてこのようなふるまいにしたのは何故なのでしょうか?
    • Re:割り算 (スコア:3, 参考になる)

      何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。

      というか戻り値を浮動小数にしたいなら、base * height / 2.0って書けば良いだけで、すぐに慣れると思うけど。

      • Re:割り算 (スコア:1, すばらしい洞察)

        by Anonymous Coward on 2007年11月26日 18時59分 (#1255829)
        > 何故かって言われても、二項演算子の正体がメソッド呼び出しのシンタックスシュガーだから、としか言いようがない気が。

        いや、メソッドだろうがオペレータだろうが関係なく、オーバロードしてある(デフォルトの)動作に一貫性が無いってことなんじゃない? 何を以って一貫してるとするかは議論の余地があるけど、これに関してはCの悪い面を引きずったと言えるんじゃなかろうか。(「Cの仕様と一貫性がある」とは言えるだろうけど。ほんとに便利?)

        尤も、万人が納得する解決は無いだろうけどね。正確に割り切れない時は浮動小数点数に型変換する、という仕様だと、思わぬところで制度が落ちることがある。両方が正確な数なら分数で計算する、という仕様だと、うっかりしてると計算のほとんどが分数のまま進行して(浮動小数点数演算に比べて)がくんと性能が落ちることがある。
        親コメント

アレゲはアレゲを呼ぶ -- ある傍観者

処理中...