MVC / MVP / MVVM O que diabos?

Recentemente, trabalhei em um projeto de .Net WPF para construir um sistema de ponto de venda no varejo onde usei o padrão MVP pela primeira vez. Demorei um pouco para passar a cabeça pela mudança de abordagem, mas uma vez que fiz isso, pensei que o conceito abalasse!

Minha pergunta é esta: qual é a diferença entre MVC, MVP e MVVM? Se houver uma distinção clara, existem orientações sobre quando você deve usar um padrão em detrimento de outro?

Se alguém puder oferecer orientação sobre isso, ou apontar um artigo que explique as diferenças, eu agradeceria muito.

questionAnswers(2)

yourAnswerToTheQuestion