title: What are the differences between Presenter, Presentation Model, ViewModel and Controller?
body: <p>I have a pretty good idea how each of these patterns work and know about some of the minor differences between them, but are they really all that different from each other?</p>
  
  <p>It seems to me that the Presenter, Presentation Model, ViewModel and Controller are essentially the same concept.</p>
  
  <p>Why couldn't I classify all of these concepts as controllers? I feel like it might simplify the entire idea a great deal.</p>
  
  <p>Can anyone give a clear description of their differences?</p>
  
  <p>I want to clarify that I do understand how the patterns work, and have implemented most of them in one technology or another. What I am really looking for is someone's experience with one of these patterns, and why they would not consider their ViewModel a Controller for instance.</p>
  
  <p>I'll give some reputation points for this, but I'm looking for a really good answer.</p>