These are chat archives for jdubray/sam

11th
Jul 2017
Jean-Jacques Dubray
@jdubray
Jul 11 2017 11:40
unfortunately, these state machines don't work. We have tried to apply them to general software engineering problems for decades without any success. They only work in simple cases.
Fred Daoud
@foxdonut
Jul 11 2017 12:02
Thank you for confirming that @jdubray
devin ivy
@devinivy
Jul 11 2017 13:20
that has also been my basic experience. extremely useful concept– not ideal for medium- and large-sized programs. one theme i see with SAM/STAR/TLA+ is that it's useful to understand yourself as being part of a larger state machine, but only considering where you are locally.
the program can verify if it's in a valid state by being proactive about rejecting "bad ideas" (bad proposals) that come from the user or app itself. once you program for validity, there's less pressure for every module of an application to understand all the app's rules. which is very nice :)
Jean-Jacques Dubray
@jdubray
Jul 11 2017 23:52
:+1: so well said!
When I discovered TLA+ and started to understand the differences with classical state machines that's exactly how I felt.
Jean-Jacques Dubray
@jdubray
Jul 11 2017 23:59
What's missing in traditional programming semantics be it imperative or declarative, is the flow that SAM/TLA+ bring to the code, it's easy to follow but rigid enough to bring real value. Without that structure, you tend to squeeze all the concepts in a few lines of code and that's when it becomes a maintenance nightmare, you have no precise way where to attach additional rules/logic, SAM on the contrary allows you add code naturally to what's already existing, and that, is something that Redux, Cycle.js, Elm,... don't do. Their flow is basically reduce/render/reduce/render...