タグ付けされた質問 「reactive」

1
Akkaがリアクティブとして販売されているのはなぜですか?アクターモデルはリアクティブですか?
私が理解している限り、アクターモデルとリアクティブプログラミングは別々の概念です。アクターモデルは本質的に私に反応しないようです。 ただし、アクターモデルの実装であるAkkaフレームワークは、リアクティブとして説明されています。 「JavaとScalaのプログラムロジックは、反応型でメッセージを送受信する軽量のActorオブジェクトに存在します。」 「私たちは反応的です」 用語の誤用の場合ですか、それとも完全に正しいですか?アクターモデルの実装(Erlangなど)は既にリアクティブですか?他のメッセージへの応答としてメッセージを生成するだけで、同様にリアクティブと見なされますか? アプローチが対比されるいくつかの関連読書: StackOverflow:RXとrabbitmqやzeromqのようなメッセージングキュー CS.SE:機能的リアクティブプログラミングとアクターモデルはどのように関連していますか? 究極のラムダ:アクターとリアクティブオブジェクト

3
RxJavaクラスFlowableは、正当に460個のメソッドを持つことができますか?
JavaのReactiveX (RxおよびReactive Extensionsとも呼ばれます)の実装であるRxJavaを始めたばかりです。本当に私を襲った何かがの巨大な大きさだったRxJavaのフロアブルクラス:それは460個のメソッドを持っています! 公平であるために: オーバーロードされたメソッドが多数あり、メソッドの総数が大幅に増えます。 おそらくこのクラスは分割されるべきですが、RxJavaに関する私の知識と理解は非常に限られています。RxJavaを作成した人々は確かに非常にスマートであり、それらは作成するために選択するための有効な引数を、おそらくを提供することができますフロアブル剤を非常に多くの方法で。 一方: RxJavaはのJava実装であるMicrosoftの反応性の拡張機能、およびそれがさえ持っていないフロアブルクラスを、ので、これは盲目的に既存のクラスを移植し、Javaでそれを実施する場合ではありません。 [ 更新:イタリック体の前のポイントは事実正しくありません。マイクロソフトの観察可能な 400以上のメソッドを持つクラスは、RxJavaのための基礎として使用された観察可能なクラス、および流動性は、に似て観察可能な大量のデータのためではなく、ハンドル背圧。そのため、RxJavaチームは既存のクラスを移植していました。この投稿は、元のデザインに挑戦されている必要があり、観察可能マイクロソフトによってクラスではなく、RxJavaのフロアブルクラスを。] RxJavaはわずか3年以上前であるため、これは(Javaの初期リリースの場合のように)優れた(SOLID)クラス設計原則に関する知識が不足しているためにコードが誤って設計されている例ではありません。 Flowableほどの大きさのクラスでは、その設計は本質的に間違っているように見えますが、そうではないかもしれません。このSEの質問に対する1つの答えクラスメソッドの数の制限は何ですか?答えは「必要な数のメソッドを用意する」ことです。 明らかに、言語に関係なくそれらをサポートするためにかなりの数のメソッドを必要とするクラスがいくつかあります。それらは簡単に小さなものに分解されず、かなりの数の特性と属性を持っているからです。例:文字列、色、スプレッドシートセル、データベース結果セット、HTTPリクエスト。これらのことを表現するためのクラス用のメソッドをおそらく数十個用意することは、理不尽に思えません。 しかし、Flowableには460個のメソッドが本当に必要なのでしょうか、それとも非常に巨大なために、必ずしもクラスの設計が悪い例ですか? [明確にするには:この質問は、具体的RxJavaのに関し、フロアブルクラスではなく、神は、一般的にオブジェクト。]

1
Freeモナドとリアクティブエクステンションはどのように相関しますか?
私はLINQがRx.NETに進化したC#のバックグラウンドから来ましたが、FPには常に興味がありました。F#でモナドといくつかのサイドプロジェクトを紹介した後、次のレベルに進む準備ができました。 さて、Scalaの人々からの無料のモナドに関するいくつかの講演と、HaskellまたはF#での複数の記事の後、理解がIObservableチェーンに非常に類似していることを理解するための通訳付き文法が見つかりました。 FRPでは、チェーン内に留まる副作用や障害を含む、より小さなドメイン固有のチャンクから操作定義を作成し、一連の操作と副作用としてアプリケーションをモデル化します。無料のモナドでは、私が正しく理解していれば、ファンクターとして操作を行い、coyonedaを使用してそれらを持ち上げることで同じことを行います。 針をアプローチのいずれかに向けて傾ける両方の違いは何ですか?サービスまたはプログラムを定義するときの基本的な違いは何ですか?

2
エンティティーコンポーネントシステムは、デカップリング/情報隠蔽のためにひどいものではありませんか?
タイトルは意図的に双曲線であり、それは単にパターンに不慣れなだけかもしれませんが、ここに私の推論があります: エンティティを実装する「通常の」またはほぼ間違いなく簡単な方法は、それらをオブジェクトとして実装し、共通の動作をサブクラス化することです。古典的な問題へのこのリードは、「あるEvilTreeのサブクラスTreeかEnemy?」。多重継承を許可すると、ダイヤモンドの問題が発生します。私たちは、代わりの複合機能を引く可能性TreeとEnemy、さらにその神クラスへのリード線の階層までを、あるいは我々は意図的に私たちの中での行動を残すことができますTreeし、Entityそのことをクラス(彼らは極端なケースではインターフェースを作る)EvilTree自体ことを実装することができます-どのリードにコードの重複がある場合SomewhatEvilTree。 Entity-Component Systemsは、TreeおよびEnemyオブジェクトを異なるコンポーネント(たとえばPosition、Healthおよび)に分割してこの問題を解決し、AIの決定に従ってEntitiyの位置を変更するAIシステムなどを実装しようとしますAISystem。これまでのところは良いですがEvilTree、パワーアップを獲得してダメージを与えることができたらどうでしょうか?まず、a CollisionSystemとa が必要ですDamageSystem(おそらくこれらはすでにあるでしょう)。CollisionSystem通信するために必要なDamageSystem二つのものが衝突するたび:CollisionSystemにメッセージを送信しDamageSystem、それが健康を引くことができるようにします。ダメージもパワーアップの影響を受けるため、どこかに保存する必要があります。PowerupComponentエンティティにアタッチする新しいものを作成しますか?しかし、その後DamageSystemむしろ何も知らない何かについて知る必要があります-結局のところ、パワーアップを拾えないダメージを与えるものもあります(aなどSpike)。この回答と同様のダメージ計算にも使用されるPowerupSystemを修正するStatComponentことはできますか?しかし、現在では2つのシステムが同じデータにアクセスしています。ゲームがより複雑になると、多くのシステム間でコンポーネントが共有される無形の依存関係グラフになります。その時点で、グローバルな静的変数を使用して、すべての定型文を取り除くことができます。 これを解決する効果的な方法はありますか?私が持っていた1つのアイデアは、コンポーネントに特定の機能を持たせることでした。たとえばStatComponent attack()、デフォルトでは整数を返すだけですが、パワーアップが発生したときに構成できます: attack = getAttack compose powerupBy(20) compose powerdownBy(40) これはattack、複数のシステムがアクセスするコンポーネントに保存しなければならない問題を解決しませんが、少なくともそれを十分にサポートする言語があれば、関数を適切に入力できます。 // In StatComponent type Strength = PrePowerup | PostPowerup type Damage = Int type PrePowerup = Int type PostPowerup = Int attack: Strength = getAttack //default value, can be changed by systems getAttack: PrePowerup …

2
割り当てなしで状態を維持する
関数型プログラミングを学んでいて、割り当てを使用せずに特定のシナリオを実装する方法を理解できません。次の簡単な問題は、私の混乱をかなり要約しています。 特定のデータ構造の変更に関するイベントを受け取り、このデータ構造が特定の状態に達したときにイベントを発行するプログラムを記述します。 だから私は維持しているデータ構造のコピーを持っています datastructure_copy::DataStructure 変化したときに発生するイベントのストリームがあります。 datastructure_changes::Stream Change データ構造に変更を適用して新しいコピーを返す関数があります。 apply_change::Change -> DataStructure -> DataStructure そして、データの状態が目的の状態に達したかどうかをチェックする述語があります。 is_ready::DataStructure ->Boolean つまり、ストリームで機能する「reduce」のようなものが必要です。 これを実装する1つの方法は、変更が到着するたびに状態を再計算することですが、これは実際的ではないようです。私はStateモナドで少し遊んでみましたが、別の問題を解決することを意図しているように見えます。 それを行う別の方法はありますか? 私の質問は純粋に概念的なものであり、Haskellにはあまり詳しくありません。

1
GUI更新を管理するためのリアクティブプログラミングとMVVMパターン
リアクティブプログラミングとMVVMは、ドメインレイヤーをUIから分離する問題に対処できる2つのアプローチです。 MVVMは、UIコンポーネントにマップされたデータ構造であるビューモデルを定義することでこれを行います。UIはデータを表示し、ユーザーが発生したときにデータを更新する場合があります。 反応フレームワークは、データの一部が変更されたことをUIに通知するオブザーバブルのグラフを定義します リアクティブフレームワークは、主流のプラットフォーム(.netおよびjavaのRx、react.js)とより実験的な場所(haskellのFRP)の両方でマインドシェアを獲得しています。 私は主にangularでMVVMを使用しており、表現力に対するシンプルさの比率は非常に満足できるものだと思います。 リアクティブフレームワークは、mvvmが購入しない開発者に何を購入しますか? 本当に違いはありますか?たとえば、knockout.jsはmvvmフレームワークとしてアドバタイズされますが、そのインターフェースには反応的な感覚があります。 this.firstName = ko.observable("John"); this.lastName = ko.observable("Smith"); this.fullName = ko.computed(function() { return this.firstName() + " " + this.lastName(); }, this);
10 gui  mvvm  ui  reactive 

1
「フラックス」と純粋な関数型反応プログラミングの間にはどのような関係がありますか?
Fluxは、私が理解している限り、アプリケーションのデータフローを一方向で処理し、状態をプログラムの残りの部分から分離した、読み取り専用の自己完結型の「ストア」で維持する手法です。ビューによって発行され、ディスパッチャーによってディスパッチされる「アクション」。または、要するに-状態を制御する方法。 それが正しい場合、関数型反応型プログラミングとどのように相関しますか?FRPは状態を非常に強力に制御するため、これらは実際に同じ問題を解決する相互に排他的な手法だと思います。したがって、FRPライブラリ(Elmなど)を使用する場合、Fluxはほとんど使用されません。これは正しいです?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.