From: senda@... Date: 1998-05-29T15:29:22+09:00 Subject: [ruby-list:8124] Re: ruby との出会い (Re: Re: cathedral v.s. bazaar) matz> |1. perl2ruby matz> | 莫大な .pm ファイルを利用しない手はありません。これさえあれば、寝返る matz> | perl userは多いはず!:-) matz> | 手で移植できるのだから、がんばればかなり行けそうな気がします matz> matz> 制限つきなら可能でしょうね.RubyよりもPerlの方がクラスが広い matz> ので,完全対応は不可能です.ちょっと考えただけでも matz> matz> * ラベルつきブロック matz> * goto matz> * format matz> matz> は対応できそうにありません. ラベルつきブロックは痛いですね。Perlではcase文がわりに使われるので。 ラベルつきブロック+lastのパターンだけみつけて対応するとか。。。 matz> matz> |2. pthread extension matz> | rubyは自前でthreadを持っていますが、FAQにも書いてあるように速くす matz> | ることはできません。OSが許すならOSの用意したpthreadをリンクして、並 matz> | 列マシン上ではより高速に走れるというのはどうでしょう。 matz> | thread moduleと同じインターフェースでOSのthreadを使えるようにできれば matz> | 最高です。 matz> matz> なかなか魅力的なアイディアだと思います.以前に検討した時の障 matz> 害は matz> 私はあまり魅力的ではないと思います。現状ではthreadライブラリでSMPマシン上 のLWPが効率的に動く(threadとLWPが多対多の関係の2 levelモデル)のはSolarisだ けだし(認識不足?)、ソフトウエアthreadやCPUが1つしかない場合は言語処理系で threadをサポートしている場合(昔風にいうとco-routineかな)と効率は変わらない からです。 労多くして...という気がします。 # 21世紀になってからやっても遅くないと思います。 matz> * thread生成時のスタックサイズをどうするか matz> pthread_attr_init()でthread属性として設定できるようです。 matz> * rubyのgcのため各スレッドのスタックポインタと,各スレッド matz> 毎のレジスタ情報が必要 matz> これはどうやってもthreadライブラリの実装に依存でしょう。 matz> でした.前者はある値で決めうちにするとして,後者はpthreadの matz> APIの範囲内では実現できそうにありませんでした.知らないだけ matz> かな? matz> matz> まあ,GCの実装を差し替えると言うのも手なんですが,移植性のこ matz> とも考えるとなかなか難しい話ではあります. matz> 処理系レベルのthreadを採用しているせいでrubyのthreadは組み込みメソッドがす べてthread-safeに自動的になっています(だからArrayとかStringとかに関する操 作はすべてthread-safeでなんか直感に反してしまう)。もし、pthreadなど下のレ ベルでthreadを実現すると、こいつら(組み込みメソッド)にことごとく条件変数で 排他制御ブロックを突っ込まないと互換性が保たれなくなってしまいます。 # 余談: 2.8.0からGNUのlibstdc++のSTLがHPの実装からSGIの実装に変わりましたが、 # SGIの実装ではコンテナクラスをthread-safeにするため涙ぐましいまでに # 条件変数を各クラスに突っ込んでいます。すごいっす。 matz> |3. ruby reference card matz> | perlにあるようなやつです。これがあるとないとではプログラム作りの大変 matz> | さがずいぶん変わってきます。 matz> matz> 文法だけだったら,一応あるのはあるんですね[ruby-list:3257]. matz> クラスについても含めたものはruby本の巻末につく予定です. matz> わーい。 S.Senda # inf-ruby.elの新しいやつを次のbetaのsampleの下に含めてほしい # なっと。> まつもとさん