私は最近ectoという名前のフレームワークを見つけました。
このフレームワークでは、「plasm」という名前の基本コンポーネントは、ecto Directed Acyclic Graphです。ectoでは、plasmはectoスケジューラーで操作できます。
このメカニズムの利点は何ですか、また他のどのような状況でDAGの概念を活用できますか?
私は最近ectoという名前のフレームワークを見つけました。
このフレームワークでは、「plasm」という名前の基本コンポーネントは、ecto Directed Acyclic Graphです。ectoでは、plasmはectoスケジューラーで操作できます。
このメカニズムの利点は何ですか、また他のどのような状況でDAGの概念を活用できますか?
回答:
いい質問です。
編集:
良いリソース:
答えは、プログラミングとはあまり関係がないということです。問題解決に関係しています。
リンクリストが特定のクラスの問題に使用されるデータ構造であるように、グラフは特定の関係を表すのに役立ちます。リンクされたリスト、ツリー、グラフ、およびその他の抽象的な構造は、コードに実装できるという点で、プログラミングにのみ関連しています。それらは、より高い抽象レベルで存在します。それはプログラミングではなく、問題の解決にデータ構造を適用することです。
それでもプログラミングとの関係が必要な場合は、次の点を考慮してください。
他の人々はデータにDAGを適用しましたが、少なくともコードには(それ以上ではないにしても)適用できると思います。Mahbubur R Aamanがこれに言及しているので、これは実際には完全な回答というよりも、彼の回答への補遺です。
無限ループのない命令型コンピュータープログラム(@AndresFに感謝)は、有向非巡回グラフ(DAG)です。コードの実行の可能なパスが指示されていることを意味し(最初にこれ、次にそれ)、非周期的(無限ループを形成しない)。重要なコードを通るパスがリストやツリーほど単純ではないため、これらはグラフです。
私はおそらく4年間XSLTで働いていました。なぜそれが適切な汎用プログラミング言語ではないのかを説明しようとしてひどい時間を過ごしましたが、DAGが理由です。具体的には、XSLTはデータ駆動型言語です。関数を定義します(はい、関数型プログラミングの意味で)が、必ずしもこれらの関数をコードから呼び出す必要はありません。むしろ、XSLTは入力XML文書のノードの選択と反復の組み合わせをセットアップします。これにより、入力データの構造によって、どの関数がどの順序で呼び出されるかが決まります。
午前2時30分にテストしなかったデータ条件にプログラムが遭遇し、目を覚まして修正するまで、これは非常に興味深く、とてもクールでした。データにDAGを定義させると、DAGの定義はすべての可能な入力条件になります。これは、重要なビジネスアプリケーションにとっては計り知れません。彼らは想像できません。
最初は、プログラマーにとって実行順序が明確でない場合や考えられないため、関数型プログラミングはDAGではないかもしれないと考えました。ただし、機能プログラムは依存関係を定義します。実際、関数型プログラミングの宣言的な性質は、実行順序を指定せずに依存関係(a ^ 2 = b ^ 2 + c ^ 2)のみを定義するものと考えることができます(「b」と「c」のどちらが先かは関係ありません) 、両方が加算される前に二乗されている限り)。
しかし、関数型プログラミングでは、詳細なレベルでの操作の順序について意図的に曖昧になっている場合がありますが、依存関係については非常に明確です。これらは、並行処理を受け入れやすくする機能です。いずれにせよ、コードを通るパスのグラフがまだあり、そのグラフはまだ指示されています(依存タスクの前に依存関係を評価する必要があります)ので、DAGもそこに適用されると思います。
いい質問-投稿してくれてありがとう!
while (true) { print("hi"); }
ですか?たぶん、終了しないプログラムを除外したいですか?
EctoのPlasmの利点は何ですか?
DAGを使用すると、特定のタスクを他のタスクより先に実行する必要があるという制約を使用して、シーケンス内のタスクのコレクションをモデル化できます。Ectoは処理フレームワークであり、DAGを使用して処理グラフをモデル化し、グラフが同期実行を順序付けするようにします。血漿中エクトは DAGで、スケジューラはそれで動作します。
他のどのような状況でDAGの概念を活用できますか?
make
DAGを使用してビルドの依存関係を見つけるなどのビルドシステムへの参照を見たことがない別の答えを追加します。
詳細はこちら
make