1. 実際のプロジェクトで FBP を使用したことがありますか?
自動化プロジェクト (ディスパッチャー、コンポーネント iterface、一連のコンポーネント、DF 言語、DF コンパイラー、UI) 用に DF サーバーを設計および実装しました。ベア C++ で書かれており、いくつかの Unix ライクなシステム (Linux x86、MIPS、avr32 など、Mac OSX) で動作します。洗練されたフロー制御や複雑なスレッド制御などのいくつかの機能が欠けているため (それほど高度ではないコンポーネントしかありません)、機能するとしても単なるプロトタイプにすぎません。現在、フル機能のサーバーに取り組んでいます。プロトタイプの実装と使用中に多くのことを学びました。
また、いつかビジュアルエディタを作ります。
2. FBP についてどう思いますか?
2.1. まず第一に、データフロープログラミングは 究極の楽しみです
私がデータフロープログラミングに出会ったのは、プログラミングに初めて出会った20年前のような感覚でした。ただし、DF プログラミングは手続き型/OOP プログラミングとは異なりますが、プログラミングの一種に過ぎません。とてもシンプルなものでも、発見することがたくさんあります!経験豊富なプログラマーとして、非常に基本的な問題である DF 問題に遭遇したとき、それは非常に面白いことですが、それは以前はまったく知られていませんでした。そのため、DF プログラミングに飛び込むと、「サイクル」または「条件」に最初に出会った新人プログラマーのように感じることができます。
2.2. 特定のアーキテクチャにのみ使用できます
釘を打つためのハンマーです。DF は、UI、Web サーバーなどには適していません。
2.3. データフロー アーキテクチャは、一部の問題に最適です
データフロー フレームワークは魔法のようなものを作ることができます。本来は並列化用に設計されていないプロシージャーを並列化できます。コンポーネントはシングルスレッドですが、DF グラフに編成するとマルチスレッドになります。
例: makeが DF システムであることをご存知ですか? make -jを試してください(man の -j の用途を参照してください)。マルチコア マシンを使用している場合は、プロジェクトを -j を使用した場合と使用しない場合でコンパイルし、時間を比較します。
2.4. 問題の最適な分割
プログラムを作成している場合、問題を小さなサブ問題に分割することがよくあります。よく知られているサブ問題には通常分割ポイントがありますが、実装する必要はありません。DB 用の SQL やグラフィックス/アニメーション用の OpenGL などの既存のソリューションを使用するだけです。
DF アーキテクチャは、非常に興味深い方法で問題を分割します。
- アーキテクチャを提供するデータフロー フレームワーク (既存のものを使用するだけ)、
- コンポーネント: プログラマーがコンポーネントを作成します。コンポーネントはシンプルで、適切に分離されたユニットです。コンポーネントを簡単に作成できます。
- 構成: 別名データフロー プログラミング: コンフィギュレーターは、プログラマーが提供するコンポーネントを使用して、データフロー グラフ (プログラム) をまとめます。
コンポーネント セットが適切に設計されていれば、コンフィギュレーターは、プログラマーが夢にも思わなかったようなシステムを構築できます。Configurator は、プログラマーの邪魔をすることなく、新しい機能を実装できます。パーソナライズされたソリューションがあるため、顧客は満足しています。ソフトウェアの製造元も満足しています。ソフトウェアの顧客固有のブランチをいくつか維持する必要がなく、顧客固有の構成だけを維持する必要があるからです。
2.5。スピード
システムがネイティブ コンポーネントで構築されている場合、DF プログラムは高速です。唯一の時間の損失は、単純な OOP プログラムと比較して、コンポーネント間のメッセージ ディスパッチです。これも最小限です。
3. FBP に未来はありますか?
はい、そうです。
主な理由は、まったく新しい奇妙なソフトウェア アーキテクチャや奇妙な言語を導入することなく、大規模なマルチプロセッシングの問題を解決できることです。データフロー プログラミングは簡単です。つまり、コンポーネント プログラミングとデータフロー構成の構築の両方を意味します。(データフロー フレームワークの記述でさえ、難しい科学ではありません。)
また、非常に経済的です。適切なコンポーネントのセットがあれば、レゴ ブロックを組み立てるだけで済みます。DF プログラムは保守が容易です。DF 構成の構築には、経験豊富なプログラマーは必要なく、システム インテグレーターだけが必要です。
ネイティブシステムが普及し、カスタムコンポーネント作成の扉が開かれると嬉しいです。また、標準の DF 言語が必要です。つまり、プラットフォームに依存しないビジュアル エディターや複数の DF サーバーで使用できます。