[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:000995] Re: GSL



In message "[dennou-ruby:000994] GSL"
    on Fri, 14 Dec 2001 13:27:54 +0900,
    Takeshi Horinouchi <horinout@xxxxxx> writes:

> 今日の Ruby-list のメールに、GSL のラップを(一部)やったという
> のが、ありました。中を見たら、配列には独自構造体を使っているので、
> 我々的にはちょっと使えない(かつ Ruby コミュニティーにとっても好
> ましいと言い難い)ものです。NArray を利用することを提案しておき

これすごいですよね。カンドーもんです。

で、ちょっと考えたけど堀之内さんの主張は必ずしも自然じゃない
気がします。というのは、NArrayが計算機世界の多次元配列を抽象
化しているのですが、GSLはいろいろな数学的構造をそれぞれの構
造に応じて抽象化しているからです。例えばGSLではmatrixとarray
は違うものとして扱われています(まあarray自体が積極的にサポー
トされていないのですが)。

GSLは激しく巨大で、APIとして公開している構造体だけで180もあ
ります。

  % grep 'typedef struct' /usr/local/include/gsl/*.h | wc
       181     457   11649

ちらっとしかみてませんがRuby/GSLの作者の常定芳基さんのとった
方法は、ほとんどのクラスをGSLの構造体の単なる皮としているよ
うです。一つのオブジェクトをGSLの関数間で使い回しする際のコ
ストを考えるとおそらくこの方が効率的でしょう。

もちろん一部にはNArrayインターフェイスを持たせると有意義だと
思いますが、GSLのラッパと、NArrayをベースとした世界は別のも
のではないでしょうか? 

結局、現状のRuby/GSLのうちでNArrayインターフェイスをつけると
幸せになれそうな部分を探していくのが近道なのかも知れません。

-- Gotoken