As for performance, do you have a setup that we could see that shows how those are generated? Just genuinely curious.
As for performance, do you have a setup that we could see that shows how those are generated? Just genuinely curious.
The performance numbers are explained in more detailed in the frameworks comparison page (they're dbmonster average render times). There are links to each implementation (they are all naive, using production-mode versions).
I think it's really tough to do comparisons well and what it really comes down to, in my opinion, is how useful the library more so than the size and performance (within reason).
Also, my mistake on missing the links to the implementations in the comparison. Perhaps there needs to be a bit more contrast between the copy and the links?
Anyways, I've used Mithril and I think it's great, just wanted to make sure that the comparisons were fair.
So, I wouldn't consider it a standard for doing performance/size comparisons.
Now, I don't know how old this pattern is, or whether it was already commonplace 15 years ago. I was introduced to these ideas first through Redux, then learned Elm, the found SAM.
SAM fixes three approximations that we have been using in Software Engineering for Decades:
- actions can manipulate application state
- assignments are equivalent to mutation
- there is no need to define precisely what is a programming step (for instance when you write a = b + c, is that a step or is it 3 steps: read b,c, compute b+c, mutate the value of a)
To a certain degree, Redux and Elm are trying to address these three approximations as well, but they do it from a FP point of view, not from a TLA+ point of view.
Their definition of action aligns with the one of event and their approach to mutation is immutability. The main difference between SAM and Redux/Elm is the way side-effects are treated. SAM embraces side-effects (in particular asynch calls) while Redux/Elm don't know how to deal with them. Redux for instance breaks its principle #1 (single state tree) by introducing Sagas.
SAM is a factoring of your code that fits in one line of code: V = State(Model.present(Action(event))).then(nextAction)
No need for a nebula of libraries or inventing a whole new language.