SAM is a new reactive/functional pattern that simplifies Front-End architectures by clearly separating the business logic from the view and, in particular, strictly decoupling back-end APIs from the Front-End. SAM is technology independent and as such can be used to build Web Apps or Native Apps. It is also protocol independent and can be implemented over HTTP, WebSockets…
SAM is a pattern that aims at replacing the MVC pattern. If you are already familiar with MVC, you should be able to make an easy transition to SAM.
There are two main differences between MVC and SAM. First, SAM is reactive, while MVC is generally implemented in an interactive way. Some attempts have been made at implementing it in a reactive way, however, SAM is not just a reactive implementation of MVC. Second, SAM introduces the concept of State as a mechanism to further decouple the View from the Model and treats the view merely as a “State Representation”.
- SAM Lambda — SAM Lambda is a boiler plate project that implements the SAM pattern in AWS Lambda using DynamoDB to manage application/session state
Temporal logic of actions (TLA) is a logic developed by Leslie Lamport, which combines temporal logic with a logic of actions. It is used to describe behaviours of concurrent systems.
… is a formal specification language developed by Leslie Lamport. It is used to design, model, document, and verify concurrent systems. TLA+ has been described as exhaustively-testable pseudocode and blueprints for software systems.
TLA+ is based on the idea that the best way to describe things formally is with simple mathematics, and that a specification language should contain as little as possible beyond what is needed to write simple mathematics precisely. TLA+ is especially well suited for writing high-level specifications of concurrent and distributed systems.
See The Writings of Leslie Lamport for a full list of publications from this researcher.
“Programming languages provide no well-defined notion of a program step”
“State machines provide a framework for much of computer science. They
can be described and manipulated with ordinary, everyday mathematics”
- Model Checking TLA+ Specifications (1999)
- Temporal logic of actions (1994)
- Specifying Concurrent Program Modules (1983)
- ‘Sometime’ is Sometimes ‘Not Never’ (1980)
- A New Approach to Proving the Correctness of Multiprocess Programs (1979)
- The Implementation of Reliable Distributed Multiprocess Systems (1978)
- Proving the Correctness of Multiprocess Programs (1977)
- Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
- TLA+2: A Preliminary Guide
- Specifying Concurrent Systems with TLA+