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

[dennou-ruby:000707] Re: 5/22



芦野様:

堀之内です。

> この辺の話って、dennou-ruby でやったほうがよいんかな?

ですね。ということで振ります。

> 今日、航技研の人と話してたら、航技研でも ruby の好きな人が 1.5人くらい
> いるそうです。データ処理に使ってるわけではないようですが。潜在ユーザは
> あの辺にもいるかもしれません。

データ処理に使えるだけのインフラが出来てきたら、ユーザーは結構出
るかもしれませんね。ユーザーが増えればますます使い良くなる。

> > パフォーマンスは、大きな問題です。ruby で手軽に大規模な数値計算
> > をしたいと思ってますので。目標は数式を書くように数値計算プログラ
> > ムを書くです。今年度はとりあえず SX とかのベクトル計算機に ruby 
> > と NumArray を移植したいと思ってますが、その次には並列計算機への
> > 対応できたらいいなと思ってます。並列屋さんが乗ってくれれば嬉しい
> > です。自分には知識も技術もないので。
> 
> 純粋情報屋さんと言うのは、例えば並列処理とかガーベジ・コレクションとか
> それだけを研究していて、実際にはベンチマークとか理想化された例題にしか
> 適用していない例も多くて、もちろん、それで幸せな人々もいるのですが、そ
> れを実際に活用したいと思っている人もやはりいるので、具体的にどういう演
> 算・処理を高速にすると地球の人々が非常にうれしい、とか言ってみると乗っ
> てくる人々もいると思います。
> 
> 例えば「数式を書くように数値演算プログラムを書く」とか言うと数式処理が
> あるじゃん、とか言われてしまいそうなんですね。

文字通り数式を書くのでなくていいのですが、その程度の簡単さで出来
たらいいと思います。いずれにしてもコストはかかるでしょうが、流体
の場合、計算機能力の増大分は主にグリッド数とかを増やすことに費や
されてきましたから、相対的にそういうコストは重要でないと思ってま
す。

まずは、ruby で幾つかシミュレーションプログラムを作ってからのほ
うが、具体的な話はしやすいですね。

> > # こういうことは当然ながら、メーカーが移植してくれた範囲内でし
> >    か動かせない IDL や Matlab ではできません。でも Matlab あたり
> >    はもしかしたら密かに並列版を開発してたりしてるんじゃないかと
> >    想像します。IDL はそういう方向は目指してないような気がします。
> 
> 東工大で作ったフリーの MatX ( http://www.matx.org/ ) とかあるようです
> が、こういうのなら並列版が作れるかも知れませんね。

みてみました。C 的な文法で、行列等の幾つかの機能に関し簡易に表現
する記法を備えたものですね。Cソースも生成出来るようになってます
し、言語も単純なので並列版は作りやすいそうです。一方、与えられた
枠組みは越えられない手続き型言語ですね。クラスはもちろん、構造体
もないので、用意されてる範囲で出来ることをやるというタイプの言語
でしょう。

> > 配列としての機能は私の知っている限り(そして私見では) yorick と
> > いうのが最も進んでいて、参考にしてます。yorick の機能+αをベー
> > スに、サブクラスで欠損値処理機能を取り入れるといったことを考えて
> > ます。yorick は手続き型言語ですので、機能としてあるものはある、
> > ないものはないとなりますが、ruby は欲しい仕様を実現すればそれで
> > いいのでなんでも出来ます。つまり言語の柔軟性が一番効くように思い
> > ます。現在存在するか否かでなく、作れば出来るという意味では、ruby 
> > でも java でもなんでもできるでしょう。以上、まともにコメントに答
> > えられてないような気がします。すみません。
> 
> いえいえ。その辺を、こういう風にユーザが拡張可能な言語、ということを言
> えれば言語屋さんが乗ってくるかも知れません。ユーザ側から見た必要な機能
> を計算機屋さんに伝えるのはとっても大切だし、有り難がられると思います。
> それを実際に言語の設計につなげられればそれはちゃんとした研究になるし。
> まずは、ライブラリやオペレータの充実で済ませられる部分と言語仕様自体の
> への要求との切り分けができないといけないのかな?

手続き型言語と比べると、ruby の場合クラスを定義することで「型」
を勝手に増やせるので、柔軟性はかなり高いです。MatX とは次元がち
がいます。でも勿論出来ないこともあって、例えば演算子は振る舞いを
(再)定義できても、新しい演算子を勝手に導入することはできません。
ですから、数学的にはこれこれ演算子ですっきり書きたいとか思っても、
もともとの演算子のかたちにはまらない限りできません。代りにメソッ
ドを使うことになるので、記述がちょっと見にくくなるのは避けられま
せん。ただ、そこをなんとかするために ruby からはみ出すのは得策で
ないと思います。やるなら ruby そのものを変えていくのでないと。

堀之内 武                    horinout@xxxxxx
京都大学宙空電波科学研究センター        phone:0774-38-3812  
611-0011 宇治市五ヶ庄                     fax:0774-31-8463