[解決済み] Boost StatechartとMeta State Machineの比較
2022-04-28 11:13:53
質問
boostには、ステートマシン用のライブラリが2つ入っているようです。 ステートチャート と メタ・ステート・マシン (MSM)です。このキャッチフレーズは、非常によく似た説明をしています。
- Boost.Statechart - 任意で複雑な有限状態機械を、読みやすく保守性の高いC++コードで実装することができます。
- Meta State Machine - 表現力豊かなUML2有限状態マシンのための非常に高性能なライブラリです。
この2つの主な違いや、どちらを選ぶかの注意点をご存知ですか?
どのように解決するのか?
多くの人が興味を持っているようなので、私の(明らかに偏った)意見を述べさせていただきますが、これは大目に見てください。
- MSMの方がはるかに速い
- MSMはRTTIや仮想的なものを必要としない
- MSMはUML2をより完全にサポートしている(例えば、内部遷移、UML準拠の直交領域など)
- MSMは記述言語(実際には複数)を提供します。例えば、eUMLフロントエンドを使用すると、遷移はSource + Event [Guard] / Action == Targetのように記述することができる。
- MSMは大きなステートマシンのためにコンパイラに負担をかけるので、かなり新しいコンパイラ(g++ >= 4.x, VC >= 9)が必要です。
MSMのレビュー時に投稿されたコメントを探せば、自分の意見をより明確にすることができます。この話題は開発者リストで大いに議論されました。
関連
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】'cout'は型名ではない
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] UbuntuにBoostをインストールする方法
-
[解決済み】Visual Studio 2010でBoostを使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】'std::cout'への未定義の参照