MVVM is a pattern that emerged to address some of the limitations of MVC and MVP, and to combine some of their strengths. This pattern first hit the scene as a part of Small Talk's framework, under the name Application Model, in the '80s, and was later improved and given the updated name of Presentation Model.
Application Model is also used to describe a hierarchical way of implementing MVVM, which will be covered in Chapter 6, Northwind—Hierarchical View Model and IoC
In the previous chapter, we reviewed a few shortcomings of MVC and how it dealt with view state and view logic, including the following:
The view logic and view state were in the view and therefore difficult to test
The view state and view logic were tightly coupled to the model and controller and were not reusable
These issues were addressed in the Passive View version of MVP by making the view a humble view and moving the view state and view logic into an external class.