我真的无法理解这两个图之间的真正区别.我的意思是这两个交易都是"状态",但我不确定是什么处理什么?
我很好奇是否有一种编程语言将状态机(类似于boost :: statechart)作为主要语言构造.
类比 - c#有委托,其中java使用观察者模式,C有回调.Perl和python有内置哈希,而C++和java需要一个库.
更新:
这应该是C++,C#,Java,Lisp等意义上的通用编程语言......
我的意思是"成熟"的状态机,在Harel形式主义或UML状态图或boost :: statechart的层面上都有所有的铃声和口哨声.
我听说有人使用这些条款.
我想知道他们是否提到了同样的事情,或者两者之间是否存在差异?
我试图了解Ember.js中的状态是否仅被设计/假设在路径管理器中定义,以及路由是否是Ember的组成部分.几乎所有我看过的指南似乎都假设您希望状态和路线完全匹配.
我想创建不依赖于路由的状态,而只是创建应用程序的状态.例如,在电子邮件客户端中,我可能具有"userHasSpecifiedRecipient"状态.仅当此状态为true时,我才能启用表单的消息框.但显然我不希望网址是:
myEmailClient.com#composingMessage_userHasSpecifiedRecipient_userIs... 等等
有这样的例子吗?
第二个问题:我可以混合与路线和状态相结合的状态吗?
最后:我看到一些建议,建议人们使用Ember的sproutcore-statechart插件,如果他们想要并发状态之类的东西.这仍然是真的吗?
我想对上面的调查问卷进行建模,我认为它是一个有向无环图。
我一直在关注的两个库是:
我遇到的几个问题是:
调查问卷依赖于先前的状态,例如先前问题的答案用于转换到另一个状态(问题)。我认为“外部国家”可以解决这个问题对吗?
如果我处于 Q6 并且我想过渡到上一个问题,那么根据之前的答案,这可能是 Q1、Q4 或 Q5。我想我可以使用堆栈在调查问卷进行时推送每个状态,然后弹出以返回到之前的状态。
这一切听起来可行吗?或者有更好的方法来模拟这个问题吗?
在阅读了 Miro Samek 的优秀著作《Practical UML Statecharts in C/C++》之后,我迫不及待地想尝试一下。最近,我开始自学 Haskell 和函数式编程。
\n在我关于 Haskell 的书刚读了几章后,我就突然意识到状态图可能很困难,甚至与 Haskell 的风格背道而驰。毕竟,创建无状态程序需要付出巨大的努力,或者至少将代码的所有不纯部分与纯代码部分很好地分开。
\n当我在网上搜索“Haskell”结合“statechart”时,我几乎什么也没找到!这激起了我的好奇心。毕竟,Haskell 是一种相当古老的通用编程语言。怎么可能\n似乎几乎没有与状态图相关的活动?
\nHaskell 的 Reddit 子主题“ haskeller 对状态图的思考”中提出了几种可能的解释,我希望我的简短摘录不会扭曲任何作者的观点:
\n/\xe2\x80\xa6/ Haskell 社区总体上在 UI 开发方面不是很活跃 /\xe2\x80\xa6/
\n/\xe2\x80\xa6/ 状态图的缺点是它们提供的所有灵活性\n使得模型检查(以及基于模型的\n测试)变得更加困难。/\xe2\x80\xa6/
\n/\xe2\x80\xa6/ 状态机是状态和转换规则的集合。但由于实现状态是多余的,您可以单独使用转换规则,这些规则被整齐地表示为(相互递归的)函数族。/\xe2\x80\xa6/ 但 Haskell 不受此限制,因此显式实现状态机通常是多余的。
\nHense(原文如此!),作为一名 Haskeller,我大多数时候并不真正需要显式状态机。作为一等公民和 TCO 的功能,在最好的情况下是一个实施细节,在最坏的情况下是不需要的。/\xe2\x80\xa6/
\nA。/\xe2\x80\xa6/ 在 Haskell 生态系统中,你可能会更幸运地使用“转换系统”、“演员模型”或“状态转换器”等搜索词。/\xe2\x80\xa6/
\nb. /\xe2\x80\xa6/ 函数反应式编程 (FRP) 和箭头是 Haskell 中\n实现信号流的方法。/\xe2\x80\xa6/
\nC。/\xe2\x80\xa6/ State monad 转换器可以对此进行建模。如果中间步骤中有\n外部信号,则可以\n将其嵌入\n延续 monad 中。/\xe2\x80\xa6/
\n我允许自己解释一下,并对此进行评论:
\n我正在尝试学习boost :: statechart.
我想制作一个加载文件的小应用程序.
// --------------------------------
// | |
// | O Project |
// | | |
// | v |
// | ---------------------------- |
// | | | |
// | | Unloaded | |
// | ---------------------------- |
// | | ^ |
// | | EvLoad | EvUnload |<-----O
// | v | |
// | ---------------------------- |
// | | | |
// | | Loaded | |
// | ---------------------------- |
// | | …Run Code Online (Sandbox Code Playgroud) 有一些例子展示了在基于Ember的应用程序中使用状态图:
http://www.thesoftwaresimpleton.com/blog/2012/02/28/statemachine/
https://github.com/DominikGuzei/ember-routing-statechart-example
emberjs-addons中的sproutcore-statechart和ember-states lib中的ember.statemanager有什么区别?如果我想在Emberjs中使用sproutcore-statechart,我该如何正确设置?
我正在攻读考试,之前的考试有一个问题:
网上有很多答案说Statecharts和Statemachines是一回事吗?如果没有,有人可以解释与这个问题有关的差异.
如果有人可以提供两者的例子,那将真的有帮助.谢谢
使用PlantUML,我为我的文档创建了一个小状态图:
@startuml
state Powered {
[*] -d-> Starting
Powered -r-> Starting : Some error
Starting -d-> Operational
}
[*] -d-> Powered : Power On
Powered -u-> [*] : Power Off
Powered -d-> Powered : Reset
@enduml
Run Code Online (Sandbox Code Playgroud)
(顺便说一句:PlantUML 是一个非常好的工具,可以从文本描述嵌入嵌入标记文档(如 asciidoc 或 reStructuredText)创建图形输出)
正如你所看到的图表绘制有点草率
正如文档所描述的那样,您可以通过书写-left->或-l->简称而不是仅仅对箭头方向产生一些影响-->。
有没有影响的方式方法如何,并在那里箭头画出?我真的很想只绘制水平或垂直的 直线。
statechart ×10
uml ×3
diagram ×2
ember.js ×2
boost ×1
c++ ×1
graph-theory ×1
graphviz ×1
haskell ×1
plantuml ×1
routes ×1
terminology ×1