5

私は通常、GUI に ASP.net Web フォームを使用します。これは、おそらく最も「ステートフルな」テクノロジの 1 つです。しかし、それは状態を持つすべてのテクノロジーに適用されます。30 個を超える要素と各要素の状態が 3 つを超える場合、フォームがトリッキーで複雑になることがあります。このようなフォームを設計する直感的な方法は、通常 90% で機能します。他の 10% は通常、テスターまたはエンド ユーザーを見つけます:)。

私が見ている問題は、同じオブジェクトに対して多くのシナリオを想像する必要があることです。これは、独立した操作の結果よりもはるかに困難です。

関数型プログラミングのコースから、最善の方法は状態管理を使用せず、純粋な関数と値による変数の受け渡しなどを使用することであり、これらすべてが非常に形式化されていることを知っています。避けられないこともあります。

複雑なオブジェクトの状態管理に数学の形式やアプローチを使用していますか? Haskell のモナドとは異なりますが、より伝統的なビジネス アプリケーションや言語 (Java、C#、C++) で使用できます。

チューリング完全な形式主義ではないかもしれませんが、99% も素晴らしいでしょう:)。

それが単なる別のタンブルウィードの質問である場合は申し訳ありません:)

4

2 に答える 2

1

抽象化としてメッセージ パッシングを使用します。利点:

  1. 複雑な状態の難しさは複雑な相互作用であり、典型的な GUI のような同時実行システムでは特に厄介です。メッセージパッシングは、共有状態を排除することで、1 つのプロセス内の複雑な状態が伝染するのを防ぎます。
  2. メッセージパッシングの同時実行性には優れた基本モデルがあります。たとえば、Actor モデル、CSP など、どちらも Erlang に影響を与えました。
  3. これは関数型プログラミングとうまく統合されます。Erlang をもう一度調べてください。 Peter van Roy の著書 *Concepts, Techniques, and Models of Computer Programmingは、純粋関数やメッセージ パッシングなどのプログラミング言語の基本的な構成要素と、それらを組み合わせる方法を示す優れたテキストです。テキストはPDFで無料配布されています。
于 2010-05-31T08:02:43.180 に答える