データフロープログラミング言語



Dataflow Programming Languages



解決:

制御フロー言語では、外部データを操作する一連の命令があります。条件付き実行、ジャンプ、およびプロシージャコールは、実行される命令ストリームを変更します。これは、データを流れる命令と見なすことができます(たとえば、命令は、命令によってデータがロードされるレジスタで動作します。命令ストリームがデータを移動しない限り、データは静的です)。制御フローの「if」ステートメントは命令ストリームの正しいブランチにジャンプしますが、データは移動されません。

データフロー言語では、処理される命令から命令に渡されるデータのストリームがあります。条件付き実行、ジャンプ、およびプロシージャコールは、データをさまざまな命令にルーティングします。これは、電気信号が回路を流れる方法や水がパイプを流れる方法など、静的な命令を流れるデータと見なすことができます。データフローの「if」ステートメントは、データを正しいブランチにルーティングします。



データフロー機能と言語のいくつかの例:

  • スプレッドシートは本質的にデータフローです
  • Unixパイプ
  • Futures and Promiseは、多くの現代言語に見られるデータフローまたはデータフローのような構造です。
  • アクターモデルのメッセージングは​​データフローです
  • 一部の言語にはデータフロー機能があります。
    • Ozにはデータフロー変数があります
    • GroovyにはGParがあります
    • Clojureにはclojure.contrib.dataflow、Reagi、Javelinがあります

テキスト言語



  • VHDL、Verilog、およびその他のハードウェア記述言語は、基本的にデータフローです。
  • チャック
  • 楔形文字
  • Lustre、防衛、航空宇宙、発電所業界で使用
  • プトレマイオス2世
  • ナイキスト

視覚言語

  • LabVIEW(スクリーンショット[ソース])
  • Max / MSP(スクリーンショット[ソース])
  • Pure Data(スクリーンショット[ソース])
  • Reaktor(スクリーンショット[ソース])
  • SCADE(スクリーンショット[ソース])、Lustreのグラフィカルプログラミング環境
  • SynthMaker(スクリーンショット[ソース])とFlowStone
  • vvvv(スクリーンショット[ソース])
  • Expecco(スクリーンショット[ソース])
  • シェイク(スクリーンショット[ソース])
  • [BLOK](スクリーンショット[ソース])
  • Quartz Composer(スクリーンショット[ソース])
  • AudioMulch(スクリーンショット[ソース])

視覚的なデータフロー言語を組み込んだ製品:

  • ブレンダー
  • Voreen(スクリーンショット)
  • Unreal EngineのKismet(スクリーンショット)
  • ANKHOR FlowSheet(スクリーンショット)
  • Dynamo for Autodesk Revit(スクリーンショット)
  • LiveBlox(スクリーンショット)

データフロープログラミング言語は、プログラムの状態に焦点を合わせ、状態の変化に応じて操作を実行させる言語です。データフロープログラミング言語は本質的に並列です。これは、操作が入力に依存しているため、入力が満たされると操作が実行されるためです。これは、ある操作の後に次の操作が続く通常のプログラムとは異なり、データフロープログラムでは、入力が満たされている限り操作が実行されるため、順序が設定されていないことを意味します。



多くの場合、データフロープログラミング言語は、キーがプログラムのデータであり、テーブルの値がプログラムの操作へのポインタである大きなハッシュテーブルを使用します。これにより、各コアが機能するために必要なのはハッシュテーブルのみであるため、マルチコアプログラムをデータフロープログラミング言語で簡単に作成できます。

データフロープログラミング言語の一般的な例は、他のデータ列の影響を受けるデータ列を持つスプレッドシートプログラムです。 1つの列のデータが変更された場合、他の列の他のデータもそれに伴って変更される可能性があります。スプレッドシートプログラムはデータフロープログラミング言語の最も一般的な例ですが、それらのほとんどはグラフィカル言語である傾向があります。


データフロープログラミングの1つの種類は、リアクティブプログラミングです。このスタイルのプログラミングが関数型言語で使用される場合、それは関数型リアクティブプログラミングと呼ばれます。 Web用の関数型リアクティブプログラミング言語の例はFlapjaxです。

また、anicは、HackerNewsで最近議論されたデータフロー言語です。

別の例は、オックスフォードのマートレットです。