我认为对这种“反向”或“历史性”调试进行进一步扩展很重要。我认为,了解其中的复杂系统和行为,重播使状态明确的“事件”绝对至关重要。
我想表达的是,您并不孤单地想知道为什么这种技术在今天没有得到广泛应用,或者为什么很少清楚地讨论相关问题。
因此,让我们在这里强调两个非常重要的概念:
1.要了解编程系统,使状态明确是有帮助的
2.为了进一步了解编程系统,重播状态(事件)序列会很有帮助。
以下是解决该问题并提出或设计该问题的解决方案的一些资料(处理复杂系统中的状态):
-在焦油钻头外面,论文:http ://shaffner.us/cs/papers/tarpit.pdf
主要思想:避免,孤立或使状态明确
-CQRS
http://www.cqrs.nu/
这是两个概念的组合:命令查询隔离和事件源。存在不同的实现(Java,C#和Scala)。塔特序列的重播和域模型的演变是这里的关键部分。
如果您真的放大并看到了广阔的画面,您已经可以看到,随着函数式编程的“兴起”,人们已经(不自觉地)被fp吸引了,因为它使状态变得明确!但这仅涉及第一个问题,要解决第二个问题,您需要另一个概念,该概念可以“轻松地”描述为函数式反应式编程。
所以您可能说的很好,但是谁真正使用了CQRS和FRP?我会说(IMO,因为我没有具体数字)实际上很多公司只是因为他们不知道他们所从事的工作具有这种术语。也许您在Google周围徘徊,并且听到使用CQRS的企业的消息,已经有一些成功的故事。FRP也在缓慢上升,例如,我可以给Netflix:http : //techblog.netflix.com/2013/02/rxjava-netflix-api.html
刚刚发布了RX的实现,它实际上是基于.NET的(但具有JavaScript实现)。因此,人们今天已经在使用这些技术,以了解复杂的系统并使它们变得更好。这就是为什么他们使用反向调试技术。