4

私はデータフロープログラミングの基本を理解しており、Clojure APIJonas Bonerからの講演、GroovyのGParsなどで少し遭遇しました。Ioのような言語で普及していることは知っています(Ioについては勉強していませんが)。

私が見逃しているのは、並行プログラムを構築する際のパラダイムとしてデータフローを気にする説得力のある理由です。可変状態+スレッド+ロックモデル(Java、C ++などで一般的)やアクターモデル(ErlangまたはScalaで一般的)などの代わりにデータフローモデルを使用するのはなぜですか?

特に、上記の言語(およびScalaとRuby)でのライブラリのサポートについては知っていますが、このモデルのポスターチャイルドユーザーである単一のプログラムまたはライブラリについては知りません。誰が使っていますか?なぜ彼らは私が言及した他のモデルよりもそれが良いと思うのですか?

4

4 に答える 4

4

私も間違った例があります。クリーンなアクターモデルを実装しておらず、同時実行性の問題もありませんが、DFアーキテクチャを使用しており、非常に人気があります。スプレッドシートソフトウェア(MS Excelなど)です。

セルを変更すると、セルを参照しているセルに「再計算」信号が送信されます。とはいえ、ますます大きくなるシートで作業しているときは、データフロープログラミングの本当の味を感じることができます-作業の焦点は変わります:

  • 作成する数式は最初の重要性を失います(同じ3〜4つの数式を複製するだけです)。
  • レイアウトがより重要になります。参照を再編成し、長い数式を短い数式に分割し、パラメーターを非表示にして、最終的にデータからグラフを作成します。

数式がコンポーネントであり、参照がメッセージであることに気付いた場合、データフロープログラミングの通常の方法が得られます。最初にいくつかのコンポーネントを作成し、次にそれらを使用してデータフローグラフを作成します。コンポーネントが大きすぎる場合は、それらを小さいコンポーネントに分割します。最後に、目を見張るような結果を表示するための視覚化コンポーネントを選択します。

于 2010-06-18T12:07:16.083 に答える
2

私にはあなたに良い「ポスターの子」(私はこの用語が好きです)がいます。たぶん今まで見たことがないのですが、聞いたことがあると思います。

現代のほとんどすべてのデジタルシンテハイザーとサンプラーには、ある種のデータフローアーキテクチャが組み込まれていると思います。それらがどのように機能するかをお話ししましょう。

Roland JV-1080が最初であったかどうかはわかりませんが、4層音源方式の最も有名なシンセサイザーでした。キーボードのキーを押すと、パッチが開始されます。1..4音源で構成されています。サウンドジェネレーターは、オシレーター、フィルター、エンベロープ、アンプなどのコンポーネントのラインです。JV-1080は一度に64のサウンドジェネレーターを再生することができます。アクティブな音源の出力はエフェクト構成になります。音源のパスは「ハードワイヤード」で、エフェクトバスのエントリーポイントと量を選択できます。

Roland JV-1080のエフェクトバスには、ドライ、カスタムエフェクト、クワイア、リバーブの4つのエントリポイントがあり、メイン出力があります。エフェクトバスは固定されていますが、すべてのエフェクトの出力は、その右端にある他のすべてのエフェクトに配線されているため、量をゼロに設定することで、エフェクト間の「接続を削除」できます。

Alesis QSシリーズ(QuadraSynth、QS6-7-8-R、およびx.1バージョン)には、いくつかのサウンドアーキテクチャがあり、エフェクトシステムは似ています...ただし、3つのFX構成から1つを選択できます。1つのFX構成はオルガン用です(QSには信じられないほどのレスリーエミュレーションがあります):レスリー、クワイア、リバーブ。別のFX構成には2つのリバーブがあります。ギアの馬力をどのように利用するかについて、より多くの自由があります。

これらのシンセは素晴らしいですが、 Clavia Nord Modularに出会うと、忘れてしまいます。4層アーキテクチャもFX構成もありません。これには、win32プログラム、データフローエディタが付属しています。オシレーター、フィルター、エンベロープジェネレーターなど、さまざまなコンポーネントがあり、構成を描画できます。従来の4層音源を描く必要がありますが、必要に応じて99層音源を描くこともできます。それはただ揺れるだけです。(DFがすべてではないということです。RolandJVのサンプル周波数は44.1 kHz、QSのサンプル周波数は48k、Modularのサンプル周波数は96kです。)

クラビアには、シンセサイザーのアノッターラインがあります:NordLead。内部にはModularのエンジンがあります(パラメーターとサウンドはまったく同じです)が、そのモデルにデータフロープログラマーを使用することはできません。パスは固定されており、パラメータがたくさんありますが、ルートを変更することはできません。また、Modular用のNord Leadパッチセットがあります。エディターではすべてのパスが同じように見えますが、パラメーターのみが異なります。

これがモジュラーパッチの例ですhttp://www.clavia.se/pictures/nordmodular/patchwindowlarge.jpg

シンセサイザーの例で統計が得られない場合、たとえば、Cプログラマーであるため、もう1つ、より馴染みのあるものがあります。

make -j

makeがデータフローシステムであるため、「コンポーネント」を同時に実行できることに驚きました。これは、マルチコアマシンでのコンパイルが高速であることを意味します。それを試してみてください!

于 2010-06-06T21:39:45.390 に答える
1

あなたがそれについて考えるならば、リレーショナルデータベースはポスターの子です。各オペレーターが他のオペレーター/テーブルからの行のストリームを処理し、他のオペレーターに供給されるストリームを生成する評価計画を考えてみてください。

ウェブから盗まれたランダムな画像:( 出典:mathcs.slu.eduのゴールドワッサー代替テキスト

于 2010-06-03T15:50:05.560 に答える
0

これをチェックしてください:http ://www.synthedit.com/

これは、VSTi用のオーディオ関連のフレームワークおよびコンポーネントセットです。正確にはわかりませんが、作成者が独自のコンポーネントの標準的な束を使用してソフトウェアをリリースしているようです。その後、他の人がDLLをコンパイルしてコンポーネントをアタッチできます。

また、近くの人を捕まえました。同じメーリングリストに参加していて、素敵なTB303シミュレーター(有名なアナログビンテージシンセ)を作成しました。彼はSynthEditをフレームワークとして使用して作成しました。したがって、図が示すように、フレームワークとして使用でき、技術的な(またはbizmodelの)問題はありません。

ですから、一見の価値があります。ドキュメントを閲覧することで、優れた実装方法を見つけました。ただし、サイトにはdataflowという単語が含まれておらず、ドキュメントをより適切に編集する必要があります。プロジェクトの精神は問題ありません。「サードパーティ」のコンポーネント開発者も2人います。少なくとも、優れたGUIフロントエンドを備えています。

于 2010-09-03T22:37:43.347 に答える