けいじゅ@日本ラショナルソフトウェアです.

In [ruby-math :00572 ] the message: "[ruby-math:00572] Re: complex.rb
problems ", on Aug/17 07:13(JST) 正木 功 writes:

>正木です。

>|ただ, Math::sqrt は必ず結果は Float としてよいんじゃないかしら? Math系の
>|メソッドをどうするかとも関わりますけどね...
>
>Float を使う method は
>Float.sqrt
>のようにすると分かりやすいと思いますが。

それはいい案かも. 2項演算も結果の型が明示的に指定できる方法があるといい
んですけどね... いまって, パラメータの型で指定するしか方法ないですからね.

>|いまのRubyの方針だと, これはバグじゃなくてそのメソッドの仕様なんでしょう
>|ね. つまり, なるべくしてなっていると... つまり, Matrix#det と同じですね.
>
>こういう言い方をすると世の中に bug というものはなくなります。
>computer はいつも program の仕様通りに実行するだけですから。
>作った人或いは使う人の(正当な)意図と違う動作をする場合を bug と呼ぶのだと
>思っていました。

この問題は.... bugの定義は

要求仕様の通りに動作しないこと

でしょう. ただし, この場合の要求仕様は私の頭の中にあるだけで, 文書として
は存在していない. で, ユーザにとって参照できるものはリファレンスマニュア
ルになると思いますが, そんなことは書いていない.

ということで, この場合は、リファレンスマニュアルのバグと言うことでしょう
か. 

そういう厳密な解釈はどうでもよいとして、こういうタイプのプログラムって難
しいですよね、普通のシステム開発では、お客さん(お金を出す人)がいるわけで、
その人がウンと言ったものが、要求仕様となるわけですが、この場合お客さんが
いませんものね. 

Ruby本体の機能追加や変更に関しては、こうやってステークホルダ(利害関係者、
その仕様やプログラムの出来不出来に利害関係のある人)達が意見を言い合って
調整しているわけですが, ライブラリ系は誰かがつくったらそれがそのまま仕様
になってしまいますからね.

本題からハズレてしまいました(^^;;;

>|やっぱ, Rationalを組み込み(もしくはそれ相当)にすべきだよなぁって, 結論に
>|なる. 
>
>大賛成です。
>ついでに Rational をもう少し早くしてもらえると助かります。
>なんとなくですが (Bignum の)gcd の計算で手間取っているような気がします。
>gcd だけでも C で書き直したら早くならないでしょうか?

というか、組み込みにするなら, 全部Cになるんじゃないかしら? というかその
ほうがよいでしょう、immutableなオブジェクトにしたいですし。

# だれか, C版のRational書いていた人がいたような??

>|じゃ, 交換にFloat外してRationalを入れる.
>これも賛成です。

この辺が、その人のコンテキストを表していますね(^^;;; これは、リテラルの
問題とかもありますので、あまり現実的じゃなさそうですが.

# 最近 int / int -> int 派の重鎮達が顔を出さないなぁ... お盆休暇かな?

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---