1. ホーム
  2. c++

[解決済み] 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のレビュー時に投稿されたコメントを探せば、自分の意見をより明確にすることができます。この話題は開発者リストで大いに議論されました。