BT

データフローでのRuby向け宣言型並列性

| 作者: Sebastien Auvray フォローする 0 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2009年5月12日. 推定読書時間: 2 分 |

原文(投稿日:2009/5/4)へのリンク

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以上に輝かせる、ということを述べておきたい。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

「機能」ではなく「関数型」ではないでしょうか? by Shinji Minami

原文( www.infoq.com/news/2009/05/ruby-dataflow )を見ると、最初の段落は

Part of the Ruby language was influenced by functional programming techniques. Ruby programmers then adopted techniques from Erlang or Haskell with, or created bridges to these languages, eg. Erlectricity.


のようになっているので、「Ruby の一部は関数型プログラミング技法に影響を受けた。そのとき、Ruby プログラマは Erlang や Haskell から~」というような意味かと思います。

同じように、第二段落の「機能的な」も「関数型の」の方が妥当ではないかと思います。

翻訳について by masayoshi takahashi

「統一」:日本語なら「単一化」あるいは「ユニフィケーション」だと思います。

「制約、論理、避けられない、オブジェクト指向の」:最後のオブジェクト指向はともかく、「避けられない」は「手続き型」でしょう。同様に、「制約型」「論理型」と「型」をつけるほうが一般的だと思います。

「Concepts、TechniquesおよびModels of Computer Programming」:邦訳が出ています。「コンピュータプログラミングの概念・技法・モデル」です。

「緑のスレッド」:ふつう「グリーンスレッド」と書くと思います。
ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AA%E3%83%...

「MRI全体でJRubyを輝かせる」:「JRubyをMRI以上に輝かせる」というような意味だと思います。

全般的に、もう少し翻訳に気を配っていただければと思います。

Re: 翻訳について by 高宏 中台

InfoQ Japanの事務局です。ご指摘ありがとうございます。翻訳について行き届かないところも多く申し訳ございません。ご指摘通りに修正させていただきました。

InfoQ Japanは今月末で運営・翻訳体制が変更になります。今は一旦締め切りましたが、翻訳者の募集も行っていきます。もしよろしければ翻訳者としてのご協力もご検討ください。

それでは、これからもコメントよろしくお願いします。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

3 ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT