Rubyの一部は関数型プログラミング技法に影響を受けた。そのときRubyプログラマは、ErlangやHaskellから技法を導入したり、これらの言語へのブリッジ(Erlectricity(リンク)など)を作成した。
Oz言語から単一化(リンク)の概念をインポートすることで、Larry Diehl氏(リンク)は、宣言型並列モデルをRubyにもたらす。Oz(リンク)は、マルチパラダイムプログラミング言語である。主に、関数型の(lazyおよびeager 評価)、分散および並列プログラミング言語として知られているが、同時に制約型、論理型、手続き型、オブジェクト指向のプログラミングをサポートする。
プロセッサコア数が増加している観点から、Larry氏はRubyで宣言型並列モデルを利用したかった。その利点(リンク)は以下のとおりである。
- プログラムが実行することを簡単に推論できる。
- 単純だが強力な並列が可能。
これを達成するため、Larry氏は「コンピュータプログラミングの概念・技法・モデル」(PDF)で説明されているような、Dataflowスレッドの振る舞いの概念を使用している。
操作がまだバインドされていない変数を使用しようとしたら、どうなるか?純粋に感覚の観点では、操作が単純に待機するなら良いことであろう。おそらく他の いくつかのスレッドは変数をバインドすると、操作は継続する。この品のある振る舞いは、データフローとして知られている。
また、このOz方法を実現するために、氏は統一を使用している。
統一という考えは、統一アルゴリズムにより自動で解決可能な論理方程式によって、値を記述することである。
現実的には、これは以下のように書き換えられる(プロジェクトサイトから)。
# Local variables include Dataflow local do |x, y, z| # notice how the order automatically gets resolved Thread.new { unify y, x + 2 } Thread.new { unify z, y + 3 } Thread.new { unify x, 1 } z #=> 6 end
ローカルまたは宣言型(インスタンス変数)で、新たな変数を作成し、バインドする。
Ozポート(リンク)の例(非決定性の振る舞い)またはErlang-ish Actors(リンク)が提供される。
Brian Morearty氏は、いくつかの興味深いデバッグパフォーマンスやDataflow使用のメモリの問題(リンク)に取り組んでいる。Larry Diehl氏がBrian氏のブログで指摘している(リンク)。
グリーンスレッドとネイティブスレッドプールの実装のため、このライブラリがJRubyをMRI以上に輝かせる、ということを述べておきたい。
コミュニティコメント
「機能」ではなく「関数型」ではないでしょうか?
by Shinji Minami,
翻訳について
by masayoshi takahashi,
Re: 翻訳について
by 高宏 中台,
「機能」ではなく「関数型」ではないでしょうか?
by Shinji Minami,
スパムの可能性があると認識されました。モデレーターが確認し問題がなければ24時間以内に公開します。その際あなたへの通知は行われませんのでご了承ください。
原文( www.infoq.com/news/2009/05/ruby-dataflow )を見ると、最初の段落は
のようになっているので、「Ruby の一部は関数型プログラミング技法に影響を受けた。そのとき、Ruby プログラマは Erlang や Haskell から~」というような意味かと思います。
同じように、第二段落の「機能的な」も「関数型の」の方が妥当ではないかと思います。
翻訳について
by masayoshi takahashi,
スパムの可能性があると認識されました。モデレーターが確認し問題がなければ24時間以内に公開します。その際あなたへの通知は行われませんのでご了承ください。
「統一」:日本語なら「単一化」あるいは「ユニフィケーション」だと思います。
「制約、論理、避けられない、オブジェクト指向の」:最後のオブジェクト指向はともかく、「避けられない」は「手続き型」でしょう。同様に、「制約型」「論理型」と「型」をつけるほうが一般的だと思います。
「Concepts、TechniquesおよびModels of Computer Programming」:邦訳が出ています。「コンピュータプログラミングの概念・技法・モデル」です。
「緑のスレッド」:ふつう「グリーンスレッド」と書くと思います。
ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AA%E3%83%...
「MRI全体でJRubyを輝かせる」:「JRubyをMRI以上に輝かせる」というような意味だと思います。
全般的に、もう少し翻訳に気を配っていただければと思います。
Re: 翻訳について
by 高宏 中台,
スパムの可能性があると認識されました。モデレーターが確認し問題がなければ24時間以内に公開します。その際あなたへの通知は行われませんのでご了承ください。
InfoQ Japanの事務局です。ご指摘ありがとうございます。翻訳について行き届かないところも多く申し訳ございません。ご指摘通りに修正させていただきました。
InfoQ Japanは今月末で運営・翻訳体制が変更になります。今は一旦締め切りましたが、翻訳者の募集も行っていきます。もしよろしければ翻訳者としてのご協力もご検討ください。
それでは、これからもコメントよろしくお願いします。